Friday, April 26, 2024
217
rated 0 times [  217] [ 0]  / answers: 1 / hits: 414747  / 3 Years ago, tue, august 17, 2021, 7:37:33

How do I run a program in the background of a shell, with the ability to close the shell while leaving the program running?
Lets say my UI is having problems or for some reason, I need to boot up a program from the terminal window, say, nm-applet:



nm-applet


When it's started, it occupies the foreground of the terminal window.



Is there any simple way to run the program in the background without needing to leave the terminal open or have it occupy the whole terminal?



On that note, I did find a way to run programs from the terminal and have it allow for other inputs, by appending an ampersand (&) to the command as such:



nm-applet &


But this isn't much use as any processes started in the terminal are killed once the terminal is closed.
                                                                       


More From » command-line

 Answers
0

I've recently come to like setsid. It starts off looking like you're just running something from the terminal but you can disconnect (close the terminal) and it just keeps going.



This is because the command actually forks out and while the input comes through to the current terminal, it's owned by a completely different parent (that remains alive after you close the terminal).



An example:



setsid gnome-calculator


I'm also quite partial to disown which can be used to separate a process from the current tree. You use it in conjunction with the backgrounding ampersand:



gnome-calculator & disown


I also just learnt about spawning subshells with parenthesis. This simple method works:



(gnome-calculator &)


And of course there's nohup as you mentioned. I'm not wild about nohup because it has a tendency to write to ~/nohup.out without me asking it to. If you rely on that, it might be for you.



nohup gnome-calculator


And for the longer-term processes, there are things like screen and other virtual terminal-muxers that keep sessions alive between connections. These probably don't really apply to you because you just want temporary access to the terminal output, but if you wanted to go back some time later and view the latest terminal activity, screen would probably be your best choice.



The internet is full of screen tutorials but here's a simple quick-start:




[#40240] Wednesday, August 18, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
cugure

Total Points: 188
Total Questions: 110
Total Answers: 103

Location: Dominican Republic
Member since Sun, Sep 4, 2022
2 Years ago
;