ssh–linux–后台运行程序

最近遇到一种情况,那就是在ssh客户端执行了服务器上的程序后,不小心断电断网了,等再来来电来网时,重新连接 .

执行 ps -ef ,发现原来的程序已经不存在了。伤心啊!跑了两天的数据又要重新跑。我。。我。。

后来牛人们告诉我,可以使用nohup和crontab这两种方式:

第一种方式:

执行命令:

#nohup /usr/show.sh >/dev/null 2>&1 &

明白这句话,就足够我这个开发的使用了。

nohup命令说,固定的

/usr/show.sh是shell脚本的位置,里面当然是shell命令

>/dev/null 2>&1 将标准输出和错误输出重定向到/dev/null中,当然也可以不写,不写会默认到nohup.out文件中

最后面的&千万不要丢啊,这是后台运行的保证

如果重定向了,则出现一个数字,表示shell运行进程号

如果不重定向,则出现appending output to nohup.out表示成功运行了

第二种方式:

使用crontab,使用方式网上一搜一大片,这里我也简单说一句

* * * * * command

*依次代表

0~59表示分1~23表示小时1~31表示日1~12表示月份0~6表示星期(其中0表示星期日)

一种是定时,一种是每隔一定时间执行,都可以设置。

说重点,就是crontab -e之后,输入:

30 * * * * /usr/show.sh >/dev/null 2>&1

这句话的意思是,每小时的第30分钟执行以/usr/下的show.sh脚本,并将输出信息重定向到/dev/null中

如果不重定向,则去/var/spool/mail/u查看信息

注意的事情是使用crontab执行的脚本中的内容,路径要详细,环境变量要明确

贴一段:

#!/bin/bash. /etc/profile. ~/.bash_profilesource ~/.bashrc;cd /usr/spider/WebSpider/bin;for f in `ls ../lib/`;do CLASSPATH=${CLASSPATH}:$f;doneecho $CLASSPATH/opt/jdk1.6.0_29/bin/java -classpath $CLASSPATH com.weiboyi.amqp.rabbit.crawl.config.client.App /usr/data/ c 30 1 10000

不会因为忧伤而风情万种。

ssh–linux–后台运行程序

相关文章:

你感兴趣的文章:

标签云: