玩转云主机:远程登录长进程保护 nohup

举报
oneliner 发表于 2020/04/10 14:59:34 2020/04/10
【摘要】 这个系列是介绍Linux 命令行环境常用的效率工具。有些工具不是系统默认安装的,甚至有些学习成本,但如果一个动作每天要做数十次,那花一点时间优化/简化是一件划算的事。

这个系列是介绍Linux 命令行环境常用的效率工具。有些工具不是系统默认安装的,甚至有些学习成本,但如果一个动作每天要做数十次,那花一点时间优化/简化是一件划算的事。


nohup 无需额外安装,是操作系统自带命令,提供对长时间运行单进程的保护。

在讲 nohup 之前,我想先说 &(后台执行) 命令。

& 放在一条命令后面执行,这条命令会转入后台, shell REPL(read-eval-print-loop) 不会阻塞,我们可以继续其他操作,它保护的是我们的注意力而不是任务本身。 以下是一个下载大文件的示例:

-

Bash 代码


1wget 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 我。即使网络中断,客户端死机都没事,服务端的进程会继续执行。

-

Bash 代码


1nohup bash superLongScript.sh &

可以去赶车了。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。