如果正在运行一个进程,在终端退出的时候不想该进程结束,那么就可以使用
nohup命令
命令简介
|
|
|
|
该命令可以在你退出账户/关闭终端之后继续运行相应的进程。 nohup 就是不挂起的意思(no hang up)。
nohup 运行由 Command 和相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。要想后台运行 nohup 中的命令,只需要在整个命令的结尾添加 &。
如果使用 nohup 命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为 nohup.out 的文件中,除非另外指定了输出文件。
使用举例
|
|
上面例子中末尾的
&表示后台运行该条命令;nohup表示不挂起该条命令,关闭终端之后该命令依然在运行。
> 表示重定向到哪里,例如: echo "123" > /home/123.txt
/dev/null 表示空设备文件,意思就是所有的输出都不进行保存
1 代表 stdout 标准输出
2 代表 stderr 标准错误
2>&1 表示 2 的输出重定向为 1 ;(这里 2>1 看起来是一个更好的方式把标准错误重定向到标准输出,但是容易把 1 误解为一个文件,因此加上了 & 标明是一个文件描述符而不是一个文件名,因此写成 2>&1 )
> /dev/null 2>&1 语句含义:
首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息;
然后,标准错误输出等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
退出任务
如果运行的任务在当前
shell终端,可以通过jobs命令查询相关信息,并且杀掉进程。
|
|
如果非当前 shell 终端,可以通过 ps aux | grep client_darwin_amd64 获取 pid 然后 kill pid
jobs 命令的一些参数:
|
|