您的位置:首页 > 运维架构 > Linux

ssh--linux--后台运行程序

2012-05-03 17:10 127 查看
最近遇到一种情况,那就是在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_profile

source ~/.bashrc;

cd /usr/spider/WebSpider/bin;

for f in `ls ../lib/`;

do

CLASSPATH=${CLASSPATH}:$f;

done

echo $CLASSPATH

/opt/jdk1.6.0_29/bin/java -classpath $CLASSPATH com.weiboyi.amqp.rabbit.crawl.config.client.App /usr/data/ c 30 1 10000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: