在Unix和类Unix系统中,nohup
和&
(and)是两种用于控制命令执行方式的方法,它们的应用场景和目的不同。
nohup
nohup
是一个命令,全称是 "no hang up"。它的主要作用是让你提交的命令在你退出(注销终端)之后继续运行。这是非常有用的,特别是在需要长时间运行的任务时,即使终端会话结束或是用户被迫登出系统,任务依然不会被终止。
例子: 假设你在服务器上运行一个需要运行几个小时的数据备份脚本:
bashnohup ./backup-script.sh &
这里 nohup
确保即使你退出SSH会话,backup-script.sh
脚本将继续运行。
&(and)
&
是一个放在命令末尾的符号,用于让命令在后台执行。这意味着你可以在命令执行的同时,继续在同一终端进行其他操作。
例子: 你想在后台运行一个Python脚本,并且立即回到命令行继续其他操作:
bashpython myscript.py &
这个命令会立即返回,让myscript.py
在后台执行,而你可以继续在命令行中执行其他命令。
区别
- 持续性:
nohup
用于确保命令在用户退出后继续执行,而&
仅仅是将命令放到后台执行,并不能保护程序不受挂断信号的影响。 - 用途:如果你需要在退出会话后仍继续执行命令,应该选用
nohup
。如果只是想把命令放到后台,使得终端可以立即用于其他任务,使用&
即可。
通常,这两者可以结合使用,即使用 nohup
来保护进程不被挂断,同时使用 &
让其在后台执行,如前面的数据备份脚本例子。这样既可以防止会话结束时任务被终止,也可以让终端可以被立即重新使用。
2024年8月14日 18:20 回复