有一个简单的守护进程 – 如果一个简单的任务?

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项目的一部分。