Linux远程主机在后台运行任务暂停脚本。
关键词:&;,nohup,脚本暂停。
在应用Unix/Linux时,我们通常希望有一个程序在后台运行,所以我们会经常使用& amp;让程序在程序结束时自动运行。
键入Ctrl+C,SIGINT信号,程序会继续运行。
方法1:输入命令:jobs。
方法二:输入命令:ps。
fg、bg、jobs、& amp、nohup、ctrl+z、ctrl+c命令。
在一个命令的结尾,你可以把这个命令放在后台,比如
可以把前台正在执行的命令放到后台,处于暂停状态。
查看当前有多少命令正在后台运行。
jobs -l选项可以显示所有任务的PID,作业的状态可以是正在运行、已停止、已终止。但是,如果任务是kill,shell将从当前shell环境已知的列表中删除该任务的进程标识符。
将后台的命令转移到前台继续运行。如果后台有多个命令,可以用fg %jobnumber(命令号,不是进程号)调出选中的命令。
更改在后台暂停的命令,以便在后台继续执行。如果后台有多个命令,可以使用bg %jobnumber调出选中的命令。
方法1:通过jobs命令检查作业号(假设num),然后执行kill %num。
方法二:通过ps命令检查作业的进程号(pid,假设PID),然后执行kill pid。
前台进程的终止:Ctrl+c
如果程序总是在后台执行,那么即使当前终端关闭也会执行(previous & amp;做不到),这个时候就需要nohup了。此命令可以在您注销帐户/关闭终端后继续运行相应的进程。
中断关闭后,jobs无法再在另一个终端上看到后台运行的程序,所以此时使用ps(进程视图命令)。
如上图所示:
Nohup和& amp;结合后台运行程序。
可以输出到out.log来保存程序输出,也可以输出到/dev/null,即一个空设备而不保存输出。
无论在nohup.out还是test.out中,都无法看到以上三种方式的数据结果,因为python执行已经缓存了输出。
解决
新界面访问查看器
使用后台运行程序:
结果将输出到终端。
用Ctrl+C发送SIGINT信号,程序免疫。
关闭会话发送SIGHUP信号,程序关闭。
使用nohup运行程序:
默认情况下,结果将输出到nohup.out。
用Ctrl+C发送SIGINT信号,程序关闭。
关闭会话发送SIGHUP信号,程序就免疫了。
Nohup和& amp;合作启动程序:
同时对SIGINT和SIGHUP信号免疫
同时,还有一个最佳实践:
不要将信息输出到终端标准输出或标准错误输出,而是使用日志组件将信息记录在日志中。
Nohup和& amp;有什么区别?