Linux中让命令后台运行
当我们打开一个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 &