让命令在后台执行
后台执行命令有很多方法,比如:
1. 使用 &
在你想要后台执行的命令最后加上一个&
就能让命令在后台运行了.
➤ htop &
[1] 12781
➤ ps
PID TTY TIME CMD
12554 pts/5 00:00:00 bash
12781 pts/5 00:00:00 htop
12782 pts/5 00:00:00 ps
➤
怎样把再它调出来呢? 用fg
命令. 还可以用jobs
命令查看当前终端上运行的后台程序.
2.使用 nohup
nohup - run a command immune to hangups, with output to a non-tty
这是正统的后台运行.
nohup ./my-shell-script.sh &
默认程序的输出内容会保存到当前目录下的nohup.out
文件中, 所以一般运行的时候都是这样(如果你不需要查看运行结果的话):
nohup ./my-shell-script.sh &> /dev/null &
3.使用 screen
这也是后台运行常用的工具, 比起nohup
, 它可以随时随地查看运行情况, 并且进行操作, 更多关于screen
的介绍请看:
Linux 技巧:使用 screen 管理你的远程会话
其实还有一个比screen
更酷炫的软件, 叫 tmux
, 有兴趣可以去了解下哦~
4. 使用 at
这真是巧妙, 作者能想到这一点我也是佩服, at
一般都是作为计划任务来使用的, 但是这样也能起到后台运行的效果.
再明天上午十点执行备份脚本: at -f backup.sh 10 am tomorrow
或者现在就执行: at -f backup.sh now
# -f 的意思是执行后面的文件
查看任务队列用atq
删除任务可以用 adrm [number_of_task]
或者 ad -d [number_of_task]
5.使用watch
这个说起来就有点牵强了, 毕竟watch
不是干这个的呀.
原作说的是持续运行某条命令, 凑活写上吧..
每隔五秒执行一次df -h
, 如果不加-n 5
的话, 默认是两秒, watch -n 5 'df -h'