如果正在运行一个进程,在终端退出的时候不想该进程结束,那么就可以使用
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
命令的一些参数:
|
|