当我们打开一个shell窗口执行命令时,如果命令正在执行的时候把shell窗口关闭,命令也会停止,因为这条命令是由shell启动的,shell是它的parent,Linux中父进程结束时,所有由此父进程启动的命令都会被停止。

要想让命令一直后台执行,不受shell窗口的影响,我们可以使用nohup(no hang up),具体语法为:nohup command &

(&符号的意思自行百度吧。。)

例如使用dotnet启动一个程序并后台运行:

nohup dotnet xx.dll &

此时创建了一个单独的进程运行dotnet命令,就算把shell窗口关闭也不会影响进程运行。我们可以用ps命令找到这个进程:

ps -aux | grep dotnet

grep是对结果进行过滤,只显示包含dotnet字符串的结果,不了解的自行百度grep、管道等知识。

如下找到两条数据:

cquser   38700  0.3  0.8 2486632 29540 pts/0   SLl  05:48   0:00 dotnet testbk.dll
cquser   38709  0.0  0.0  12944   960 pts/0    S+   05:48   0:00 grep --color=auto dotnet

第一行就是我们在后台执行的命令,38700是PID,想结束进程可以kill进程号

kill 38700

最后,nohup默认会将原来命令的输出保存在当前目录的nohup.out文件中,可以指定这个文件:

nohup command > myout.txt 2>&1 &