玩转云主机:远程登录长进程保护 nohup
【摘要】 这个系列是介绍Linux 命令行环境常用的效率工具。有些工具不是系统默认安装的,甚至有些学习成本,但如果一个动作每天要做数十次,那花一点时间优化/简化是一件划算的事。
这个系列是介绍Linux 命令行环境常用的效率工具。有些工具不是系统默认安装的,甚至有些学习成本,但如果一个动作每天要做数十次,那花一点时间优化/简化是一件划算的事。
nohup 无需额外安装,是操作系统自带命令,提供对长时间运行单进程的保护。
在讲 nohup 之前,我想先说 &(后台执行) 命令。
& 放在一条命令后面执行,这条命令会转入后台, shell REPL(read-eval-print-loop) 不会阻塞,我们可以继续其他操作,它保护的是我们的注意力而不是任务本身。 以下是一个下载大文件的示例:
1 | wget http://somewhere.com/veryLargeFile.tar.gz & |
nohup 放在一条命令前面执行,通常配合 &。如果一个同步任务已经执行 90%, 你预估还要20分钟,可是夜班车还有10分钟就收车了。你很想走,但是怕走了以后terminal 会异常退出,这样5个小时的任务前功尽弃了。异常退出的原因有很多,比如:
网络抖动了(很少)
vpn 切换了(不小心)
笔记本电池没电了(客户端putty 断了)
跳板机被抢占(windows sucks)
长时间没有输入(session timeout )
主动登出(忘了)
以上都会造成客户端和远程server 中断使shell 进程退出,shell 下面发起的所有子进程都会收到一个 hangup 中断信号,包括你90%完成的任务。
而 nohup 的意思是, shell 进程你先走吧,不要 hangup 我。即使网络中断,客户端死机都没事,服务端的进程会继续执行。
1 | nohup bash superLongScript.sh & |
可以去赶车了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)