观海听涛
Waiting for you

实现ssh用户退出之后其程序继续运行

08 Oct 2012

这两天在搞一个破解密码的测试程序,采用的是暴力破解方式。于是想到在实验室的一台旁路服务器上运行程序,但是存在一个问题,要想程序不停的跑,用户必需保持在线状态,泥马,这程序跑几天都不一定能出结果呢,拿我这老是无故蓝屏死机的电脑不是作死吗!于是到网上搜了下如何实现用户logout之后其程序保持运行。

基本有两种方式,一种是用nohup,但这种方式很多人反应有些问题,具体什么问题,秉乘实用主义的心态我就不去深究了,于是这个方法直接PAAS掉。还有一种被大家比较认可的方式就是用screen了,那么screen是什么呢?screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。看起来很强大的样子,但这里只想对其最基本的功能做一下记录,以备后来之需。

假设现在我想运行一个getpasswd程序,要达到我最初的目的,只需一个条语句OK。

screen -dmS SCREENNAME PATH/TO/RUN。

要查看运行状态的话用这条命令:screen -r SCREENNAME。

再回到之前的界面用ctrl+a+d组合键即可。

查看screen的会话列表用screen -ls命令。

常用快捷键:

Ctrl+a c :在当前screen会话中创建窗口

Ctrl+a w :窗口列表

Ctrl+a n :下一个窗口

Ctrl+a p :上一个窗口

Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换