我通过 ssh 进入服务器,然后启动一项作业(例如 rsync),然后我只想能够从服务器注销并让作业自行运行。但如果我只是这样做,rsync ... &
我认为它仍然以某种方式连接到 tty,并且当注销时 tty 消失时作业就会终止。有没有(简单的)方法可以将进程与 tty 断开连接,以便能够在不终止进程的情况下注销?
答案1
你可以从屏幕
答案2
nohup rsync ... &
似乎正是我想要的。
答案3
使用setsid
并将句柄 1 和 2 重定向至/dev/null
。
例如
setsid \
perl -e 'for ( my $i = 0; 1; $i++ ) { $0 = "forever $i"; sleep( 1 ); }' \
1>/dev/null \
2>/dev/null
如果没有setsid
和尾随的 & 符号,则命令ps ax
显示:
13526 pts/4 S 0:00 forever 11
带setsid
或不带尾随符号的命令ps ax
显示:
13520 ? Ss 0:00 forever 68
...表示没有附加的 TTY。