I'm connecting to my RaspberryPi with Raspbian installed via ssh and my problem is, that I can't let the RasPi do things (installing software, make calculations) while my Computer is shut down, since the processes I launch via SSH are child processes of the SSH shell and are terminated when the connection ends. I know i can disconnect child processes from the shell, but I'm not sure which way to use and it i would like to be able to see as much of the output of the process as possible (maybe in a file?).  BTW: I'm using PuTTY from Windows 7 :(
93138
I have 2 computers, localpc and remoteserver.   I need localpc to execute some commands on remoteserver. One of the things it needs to do is start a backup script that runs for a number of hours. I would like the command on localpc to “fire” and then be running totally independent on remoteserver, like localpc was never there in the first place.   This is what I have done so far:  remoteserver contains has the script:  /root/backup.sh   localpc is scheduled to run this:  ssh root@remoteserver 'nohup /root/backup.sh' &amp;   Am I doing this the right way? Is there a better way to do this? Will I run into any trouble doing it this way?
45183
I'm trying to run a program over SSH that keeps running when I disconnect.  gave me the following command:  nohup sleep 30 &gt; foo.out 2&gt; foo.err &lt; /dev/null &amp;   Unfortunately, it doesn't seem to work. I login (ssh -Y) to a remote bash shell and execute it, disconnect, and come back within 30 seconds, but jobs shows nothing and the foo files also show nothing. Is there any other way I can run background jobs over ssh after I logout?
89423
When I start an SSH session that executes a long-running command, what happens with Ctrl+C (SIGINT) handling? I can see that the SSH session is closed, but I am not sure who gets the SIGINT first: is it...  the remote long-running command? that is, (a) the signal handler in the remote command is called and stops the remote command, (b) the shell that spawned it detects that the command stopped, and stops as well (c) the remote sshd detects the shell stopped, so it closes the connection or  the local ssh receives the signal, and closes the connection.   I think that (1) is happening, but want to make sure. I am also uncertain about what happens with shell handling of SIGINTs in this case. For example, if I ... ssh remote 'while true ; do sleep 1 ; date ; done'  and Ctrl+C, then the remote connection is dropped. Is there a way to run the remote command under a shell that will stay alive after Ctrl+C? That is, in this case, stop the loop and allow me to keep working on the remote shell?
123056
I need to start by stating that I have read through every single problem on here relating to mine, but all of them seem to have access somehow to their server's files. I do not, so here is my question.  I'm on centOS 6.5 and ssh closes connection right after a successful login. I am using mac and windows/putty to access my server with the same results. Is there anyway I can access my server now without having access to its files?   Below is the readout from ssh -vvv right after a successful login:  debug1: Authentication succeeded (password). Authenticated to 4X.5X.XX.2 ([4X.5X.XX.2]:82). debug1: channel 0: new [client-session] debug3: ssh_session2_open: channel_new: 0 debug2: channel 0: send open debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug2: callback start debug2: fd 3 setting TCP_NODELAY debug3: ssh_packet_set_tos: set IP_TOS 0x10 debug2: client_session2_setup: id 0 debug2: channel 0: request pty-req confirm 1 debug1: Sending environment. debug3: Ignored env TERM_PROGRAM debug3: Ignored env SHELL debug3: Ignored env TERM debug3: Ignored env TMPDIR debug3: Ignored env Apple_PubSub_Socket_Render debug3: Ignored env TERM_PROGRAM_VERSION debug3: Ignored env TERM_SESSION_ID debug3: Ignored env USER debug3: Ignored env SSH_AUTH_SOCK debug3: Ignored env __CF_USER_TEXT_ENCODING debug3: Ignored env PATH debug3: Ignored env PWD debug1: Sending env LANG = en_US.UTF-8 debug2: channel 0: request env confirm 0 debug3: Ignored env XPC_FLAGS debug3: Ignored env XPC_SERVICE_NAME debug3: Ignored env SHLVL debug3: Ignored env HOME debug3: Ignored env LOGNAME debug3: Ignored env _ debug2: channel 0: request shell confirm 1 debug2: callback done debug2: channel 0: open confirm rwindow 0 rmax 32768 debug2: channel_input_status_confirm: type 99 id 0 debug2: PTY allocation request accepted on channel 0 debug2: channel 0: rcvd adjust 2097152 debug2: channel_input_status_confirm: type 99 id 0 debug2: shell request accepted on channel 0 Last login: Wed Oct  7 06:23:21 2015 from 1XX.XXX.X1.185 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug2: channel 0: rcvd eow debug2: channel 0: close_read debug2: channel 0: input open -&gt; closed debug2: channel 0: rcvd eof debug2: channel 0: output open -&gt; drain debug2: channel 0: obuf empty debug2: channel 0: close_write debug2: channel 0: output drain -&gt; closed debug2: channel 0: rcvd close debug3: channel 0: will not send data after close debug2: channel 0: almost dead debug2: channel 0: gc: notify user debug2: channel 0: gc: user detached debug2: channel 0: send close debug2: channel 0: is dead debug2: channel 0: garbage collecting debug1: channel 0: free: client-session, nchannels 1 debug3: channel 0: status: The following connections are open:   #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)  Connection to 4X.5X.XX.2 closed. Transferred: sent 3176, received 2640 bytes, in 0.3 seconds Bytes per second: sent 10370.6, received 8620.4 debug1: Exit status 254
59914
I want to start a process from a shell script, allow it to interact with the user (so I cannot just background it, grab the PID, launch sleep followed by sanity checks and kill), but if it is still running after a set period of time (say, two minutes), then and only then do I want to kill it.  The intention is to simply implement a wallclock-run-time timeout for a program that doesn't have that capability built in.  Is there a way to do this, preferably from a bash shell script?
67045
I am trying to code a shell-script that uses a ssh-connection for doing "heartbeats". I want to terminate the client- and server-side of that connection after a certain timeout (after the connection drops).  What I found so far:   TCPKeepAlive yes/no for ssh and sshd ClientAliveCountMax for sshd ClientAliveInterval for sshd ServerAliveCountMax for ssh ServerAliveInterval for ssh   To change "ClientAliveCountMax" I would have to modify the sshd_config on each target machine (this option is disabled by default).  So my question is - can I use "TCPKeepAlive" for my purposes, too (without changing anything else on the source/target machines)?  Target operating system is SLES11 SP2 - but I do not think that is relevant here.
36318
ssh can use to run remote commands.  ssh me@server.com 'long-script.sh'   I run a long script that will take a lot of time, but I want to close my computer and keep running the script in the remote server. I know how to achieve this with , but I need do it via ssh.  Can I do that without interrupting my script?
41878
sometimes I run an app in the gnome-terminal, but then I suddenly have to restart gnome or something. I guess the answer to the question is also useful then I want to disconnect from SSH where something is happenning.  Gnome's terminal tree looks like this:  gnome-terminal     bash         some-boring-process   Can I 'detach' bash from gnome-terminal (or detach some-boring-process from bash and redirect its output somewhere)? If I just kill gnome-terminal, bash will be killed to will all its subprocesses
27306
When ever I need to kill a background process I do ps -e | grep &lt;process_name&gt;  Which prints something like this 1766 ? 00:00:13 conky , Then I use the process ID to kill it like so kill 1766 .   Is there any way I can simplify this ? Make it quicker ? reduce the amount of typing ?
51057
It's sunday and I left an instance of R running in the office. The script finished running, and I would like to save my workspace without going to the office. I can ssh to the computer, but I have not run the program into screen.  Is there a way, over ssh, to disown the process (I don't have access to jobsid of the terminal the program is running on!) and reattach it with say, reptyr? Reptyr and reptyr -T don't work without previously disowning the process  28845 3diag       20   0  139.3m  10.4m   0.0  0.1   0:12.06 S  `- urxvtd                                                                                        5327 3diag       20   0   16.4m   4.6m   0.0  0.1   0:00.02 S      `- bash                                                                                      5335 3diag       20   0 3499.3m 3.244g   0.0 43.3 171:57.89 S          `- R    The unique part of my question is that I explicitly require to detach a program without having access to the terminal in which it was created.
54788
I'm doing some test-runs of long-running data migration scripts, over SSH. Let's say I start running a script around 4 PM; now, 6 PM rolls around, and I'm cursing myself for not doing this all in screen.  Is there any way to "retroactively" nohup a process, or do I need to leave my computer online all night? If it's not possible to attach screen to/nohup a process I've already started, then why? Something to do with how parent/child proceses interact? (I won't accept a "no" answer that doesn't at least address the question of 'why' -- sorry ;) )
113318
When I try to shutdown the computer from a command line or terminal I must have root privileges:  amy@amy:~$ shutdown now shutdown: Need to be root   and  amy@amy:~$ halt halt: Need to be root   but when shutting down using the graphical user interface, i.e. shutdown button, or the hardware shutdown button, I'm not asked for the password to do so. What does that shutdown for the graphical interface, and why it doesn't need the password or root privileges?   I'm using Ubuntu 11.04 Natty.
116240
I just SSH'd into root, and then SSH'd again into root on the same machine. So I have two windows open both SSH'd into root on my remote machine.  From the shell, how can I see a list of these two sessions?
24544
I'm currently passing the pid on the command line to the child, but is there a way to do this in the Win32 API?  Alternatively, can someone alleviate my fear that the pid I'm passing might belong to another process after some time if the parent has died?
87946
I'm connecting to a Linux machine through SSH, and I'm trying to run a heavy bash script that makes filesystem operations. It's expected to keep running for hours, but I cannot leave the SSH session open because of internet connections issues I have.  I doubt that running the script with the background operator, the ampersand (&amp;), will do the trick, because I tried it and later found that process was not completed. How can I logout and keep the process running?
81895
I have a virtual instance of redhat running that I can ssh to from any host on the corporate network.  My ssh session was dropped while running some scripts that may or not have caused me to disconnect.  The who command locally still lists the dropped connection. Reconnecting with ssh starts a whole new session.  Is there a way to connect to the original session?  If not can I kill it?  I have root and physical access.  I was not using screen in the original session.
1970
I have been studying the Linux kernel behaviour for quite some time now, and it's always been clear to me that:     When a process dies, all its children are given back to the init process (PID 1) until they eventually die.   However, recently, someone with much more experience than me with the kernel told me that:     When a process exits, all its children also die (unless you use NOHUP in which case they get back to init).   Now, even though I don't believe this, I still wrote a simple program to make sure of it. I know I should not rely on time (sleep) for tests since it all depends on process scheduling, yet for this simple case, I think that's fairly enough.  int main(void){     printf("Father process spawned (%d).\n", getpid());     sleep(5);      if(fork() == 0){         printf("Child process spawned (%d =&gt; %d).\n", getppid(), getpid());         sleep(15);         printf("Child process exiting (%d =&gt; %d).\n", getppid(), getpid());         exit(0);     }      sleep(5);     printf(stdout, "Father process exiting (%d).\n", getpid());     return EXIT_SUCCESS; }   Here is the program's output, with the associated ps result every time printf talks:  $ ./test &amp; Father process spawned (435).  $ ps -ef | grep test myuser    435    392   tty1    ./test  Child process spawned (435 =&gt; 436).  $ ps -ef | grep test myuser    435    392   tty1    ./test myuser    436    435   tty1    ./test  Father process exiting (435).  $ ps -ef | grep test myuser    436    1     tty1    ./test  Child process exiting (436).   Now, as you can see, this behaves quite as I would have expected it to. The orphan process (436) is given back to init (1) until it dies.  However, is there any UNIX-based system on which this behaviour does not apply by default? Is there any system on which the death of a process immediately triggers the death of all its children?