使用Screen跑后台命令

     2014年07月02日       磊磊syh       运维笔记->系统管理       screen 后台 

缘起

Screen虽然几年没更新了,但依然满足我日常的很多需求,而且是所有Redhat、CentOS自带的终端模拟软件。

今天有这样的一个需求:要在批量在一堆机器上跑较长时间的命令。
虽然用nohup的后台方式已经满足了我的需求,但这次我想用screen来尝试一下批量跑后台任务的方式。

方法

Google了一下发现Screen有另外一种用法,可以启动一个Activate的Screen但不Attach,又可以跑命令,那是极好的

screen -dmS 名字 命令

实际上跑的时候我们会这么用

screen -dmS mytest /bin/bash -c 'top;exec /bin/bash'

以上命令说明:

  • mytest 是启动的screen的名字
  • /bin/bash -c 'top;exec /bin/bash' 是要跑的命令
  • 最后为什么要加exec /bin/bash? 好处是结束后不会导致screen自动退出而看不了任务跑的日志

好了,现在可以pssh来启动命令了

pssh -i -h iplist "screen -dmS mytest /bin/bash -c 'top;exec /bin/bash'"

最后,我们的程序跑完了,可以登录到机器上看看有没有问题。都ok了,就杀掉这些screen

pssh -i -h iplist "screen -X -S mytest quit"

参考