1

在实际使用shell 过程中,一些需要耗时较长的处理过程,最好是放到后台执行,从而使我们能够在终端执行更其他需要更多关注的操作。下面整理了一些关于后台执行任务的相关命令。

一、运行后台任务

  • 方法一:使用&

& 加在一个命令的最后,可以把这个命令放到后台执行

注意:

1.如果关闭当前终端,将无法维护后台任务的执行
2.需要用户交互的命令不要放在后台执行

比如这里把redis服务的启用的脚本写到了redis-service-startup.sh

# 后台运行
./redis-service-startup.sh &
  • 方法二:使用nohup

使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:nohup command &

# nohup 后台运行
nohup ./redis-service-startup.sh &

二、使用 jobs 查看后台任务

jobs -l
# 查询结果
[1]+   789 Running ./redis-service-startup.sh &  (wd: ~/Documents/dev-scripts)

[1] 中表示该任务的job number 是 1。

三、使用kill停止后台任务

如果要停止该任务,可以使用kill 命令,结合上面的jobnumber

# 停止jobnumber = 1的后台任务
kill %1

当使用nohup 后,关闭控制台后,后台任务仍然执行,这时候只能通过ps 命令查看我们执行的任务的进程号, 然后再通过kill -9 进程号 杀死进程

其他相关命令延伸:
  • ctrl + c 终止前台命令
  • ctrl + z 将正在执行的任务放到后台执行
  • fg (fg %jobnumber) 将任务从后台调往前台
  • bg (bg %jobnumber) 将后台暂停的任务变成执行任务
参考链接

will233
538 声望3 粉丝

天下大事,必作于细。


引用和评论

0 条评论