当前位置: 代码迷 >> 综合 >> Linux命令后台执行(nohup)
  详细解决方案

Linux命令后台执行(nohup)

热度:9   发布时间:2024-03-07 21:13:04.0

后台执行

在linux系统中我们常常需要在后台运行程序,如果只是从终端窗口中直接操作启动命令,一旦终端窗口关闭,程序则会停止运行。

命令 描述
command & 后台运行,你关掉终端会停止运行
nohup command & 后台运行,你关掉终端也会继续运行
  • &
    在命令后面加上& 实现后台运行
sh text.sh &

适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

command  >  out.file  2>&1  & 

所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中
成功提交进程后,会显示一个进程号。

  • 杀死进程
方法一:
ps-df | grep 进程号
方法二:
kill -9 进程号pkill -9 name
killall name
kill pid
  • nohup (解释:不挂起 | no hang up)
    使用&命令后,任务被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),任务就会停止运行。而nohup命令可以在你退出帐户之后继续运行相应的进程。
    命令
nohup command &

将运行结果或者日志打印(重定向)

nohup command > myout.file 2>&1 &

(1)command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
(2)2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。
(3)试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
注意:使用了nohup之后,很多人就这样不管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

  • 其他命令
命令 描述
ctrl + z 将一个正在前台执行的命令放到后台,并且处于暂停状态
Ctrl+c 终止前台命令。
jobs 查看当前有多少在后台运行的命令。
jobs -l 显示所有任务的PID