我ssh进入服务器,而不是开始一个工作(例如rsync),那么我只是想能够从服务器注销,让这个工作顺利进行。 但是,如果我只是做rsync ... &我认为它仍然以某种方式连接到tty,并且当tty在注销时消失,工作就会死亡。 是否有任何(简单)的方式从tty断开进程,以便能够注销而不会终止进程?
你可以在屏幕上启动它
nohup rsync ... &
似乎正是我想要的。
使用setsid并将句柄1和2redirect到/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。
在Linux(至lessUbuntu)中,可以使用start-stop-daemon
如果你想要的只是启动一个进程并保持运行,你可以使用
at now
Debian和Ubuntu有一个名为daemon的包,它似乎是libslack项目的一部分。