- 常用任务管理命令
jobs #查看任务,返回任务编号n和进程号
bg %n #将编号为n的任务转后台运行
fg %n #将编号为n的任务转前台运行
ctrl+z #挂起当前任务
ctrl+c #结束当前任务
注:如果要使在前台执行任务放到后台运行,则先要用ctrl+z挂起该任务,然后用bg使之后台执行。
- nohup &
到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)
$ nohup ./test.sh &
$ setsid ./test.sh &
回车执行,再回车,窗口中会显示一个进程号
如果中途想关闭,可执行:kill -9 进程号。如果想查看命令执行情况,可执行:cat nohup.out
日志记录
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的nohup.out 文件中。如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
使用时注意
在当shell中提示了nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;如果在nohup执行成功后直接点关闭程序按钮关闭终端的话,这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown,起不到关掉终端后调用程序继续后台运行的作用。