nohup(no hang up)、&、 >/dev/null 2>&1

2 02 3 年,我在学习Linux系统的时候,发现nohup命令非常有用。
上周,我看到实验室的一个同学使用这个命令在后台运行一个数据同步任务。
结果,航站楼被关闭,但任务仍在继续。
我感觉棒极了。

我还记得nohup默认将其输出保存到nohup.out文件中。
那次我在服务器上运行了一个备份脚本,使用了这个命令,结果文件保存得很好。

然后我发现了一个小技巧,可以将错误输出重定向到/dev/null。
例如,当我处理数据时,我不想看到这些错误信息,所以我使用2 >/dev/null来处理。

我也想记录错误信息,但不想看到正常输出,所以我使用 &>/dev/null2 >&1 丢弃标准输出,只留下错误信息。

有一次,我将 nohup 与 2 >&1 &>/dev/null 结合使用,因为我需要在后台运行任务,并且不希望错误消息影响终端。
结果,该脚本运行得很好,没有任何问题。

我的一个朋友说,您可以通过这种方式创建高效且健壮的脚本。
例如,可以通过这种方式处理定期更新数据库的脚本。

总的来说,我觉得通过学习这些命令和技术,您可以更好地管理Linux系统上的后台任务,并提高脚本的健壮性和用户体验。
它有点复杂,但是非常容易使用。
算了,你要了解一下,我觉得这个方法还不错。

在Linux中如何用nohup命令避免SSH会话中断影响进程

朋友们,这个Linux nohup命令我其实已经命令过很多次了,尤其是在做服务器管理或者自动化脚本执行的时候。
记得有一次,2 01 9 年我还在那家公司的时候,系统就在半夜更新了。
结果我的脚本执行了一半,SSH突然断了。
这就是为什么我必须重新连接到服务器,并且脚本立即被暂停。

当时我使用nohup命令来保存场景。
然后就完成了,我输入了这个词:
nohup ./system_update.sh &
这条诫命就是我刚才所说的用途。
nohup后面的是你要后台运行的systema_update.sh脚本的名称,最后一个&是后台运行。

然后脚本开始了,但我断开了该术语,仍然默默地执行脚本。
早上郁闷的时候,发现一切都完成了,我松了口气。

但此戒并非毫无谨慎。
我记得有一次,因为我没有添加&符号,所以脚本没有在后台运行,输出仍然挂着。
所以这个&符号一定要加,不然nohup就白用了。

输出管理,默认输出到当前目录下的nohup.out文件。
但在输出其他文件时也遇到了许可问题。
这时,你必须仔细确保你输入的输出文件的路径有写权限。

资源管理也至关重要。
如果长时间运行的进程没有得到适当的管理,它们确实会消耗大量的资源。
定期检查进程并杀死需要杀死的进程。

我对前屏幕和 tmux 都有经验,特别是在需要分屏多任务处理时。
但说实话,nohup 很好用,简单方便,对我来说就足够了。

所以,兄弟,这个nohup,虽然戒律老旧,但是确实管用。
只需记住这些预防措施,以便您可以轻松使用它们。