在实际使用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
) 将后台暂停的任务变成执行任务
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。