乐闻世界logo
搜索文章和话题

What 's the difference between nohup and ampersand

1 个月前提问
1 个月前修改
浏览次数14

1个答案

1

在Unix和类Unix系统中,nohup&(and)是两种用于控制命令执行方式的方法,它们的应用场景和目的不同。

nohup

nohup 是一个命令,全称是 "no hang up"。它的主要作用是让你提交的命令在你退出(注销终端)之后继续运行。这是非常有用的,特别是在需要长时间运行的任务时,即使终端会话结束或是用户被迫登出系统,任务依然不会被终止。

例子: 假设你在服务器上运行一个需要运行几个小时的数据备份脚本:

bash
nohup ./backup-script.sh &

这里 nohup 确保即使你退出SSH会话,backup-script.sh 脚本将继续运行。

&(and)

& 是一个放在命令末尾的符号,用于让命令在后台执行。这意味着你可以在命令执行的同时,继续在同一终端进行其他操作。

例子: 你想在后台运行一个Python脚本,并且立即回到命令行继续其他操作:

bash
python myscript.py &

这个命令会立即返回,让myscript.py在后台执行,而你可以继续在命令行中执行其他命令。

区别

  • 持续性nohup 用于确保命令在用户退出后继续执行,而 & 仅仅是将命令放到后台执行,并不能保护程序不受挂断信号的影响。
  • 用途:如果你需要在退出会话后仍继续执行命令,应该选用 nohup。如果只是想把命令放到后台,使得终端可以立即用于其他任务,使用 & 即可。

通常,这两者可以结合使用,即使用 nohup 来保护进程不被挂断,同时使用 & 让其在后台执行,如前面的数据备份脚本例子。这样既可以防止会话结束时任务被终止,也可以让终端可以被立即重新使用。

2024年8月14日 18:20 回复

你的答案