定时程序

dayu8375 2010-02-05 11:22:31
想用SHELL写一个小程序达到以下目的:
1。每隔5秒查看目录下是否有文件(文件会不定时FTP到该目录下)
2。如果有文件则进行处理然后MV到另一个目录下
3。要定时运行如5:00-17:00
下面是我写的SHELL

INPATH="/usr/jltt/JLTT/yyyyyy"
PERPATH="/usr/jltt/JLTT/yyyyyyy"
INFILE=$INPATH"/*"
MYDATE=`date +%y%m%d`
cd $INPATH
while [ 1 ]
do
DOCS=" "
DOCS=`ls -l | awk '{print $8}'`
if [ "$DOCS" ]
then
echo "anything in $INPATH"
for INCOME in $DOCS
do
if [ ! -e $PERPATH"/"$MYDATE ]
then
mkdir $PERPATH"/"$MYDATE
echo "mkdir"
fi
mv $INPATH"/"$INCOME $PERPATH"/"$MYDATE"/"$INCOME".B"
echo "mv $INCOME"
sleep 2
done
else
echo "nothing in $INPATH"
fi
sleep 5
done

现在有几个问题
1。我想把SELL加到CRONTAB中执行,使可以在5:00开始执行,那结束怎么办呢?在SHELL里结束?
2。怎么才能知道SHELL是否正在运行呢?
3。如果意外结束掉了能否让SHELL自动运行起来?
4。这样一直运行的SHELL会不会对系统的稳定性产生影响?
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dayu8375 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 steptodream 的回复:]
建议:
你不可以让脚本1分钟执行一次吗
这样可以通过crontab机制来调度的你的脚本 让他在5:00-17:00之内每分钟执行一次
这样就不用考虑怎么退出 意外结束掉的情况
当然 如果这样 就要加几句代码判断前一次执行是否已经结束的代码

[/Quote]
其实我的目的就是 当目录下有需要处理的文件时就进行处理 。如果是1分钟时间间隔有点太长了
dayu8375 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lylm 的回复:]
1。我想把SELL加到CRONTAB中执行,使可以在5:00开始执行,那结束怎么办呢?在SHELL里结束?
>>在shell中结束,crontab只控制启动

2。怎么才能知道SHELL是否正在运行呢?
>>ps查看进程,最好输出到日志

3。如果意外结束掉了能否让SHELL自动运行起来?
>>自己在shell中ps检查,如果进程掉了,重新运行

4。这样一直运行的SHELL会不会对系统的稳定性产生影响?
>>不会

[/Quote]
第2个问题我单独运行SHELL 用PS -ef | grep shellname 找不到进程
第3个问题SHELL都意外结束掉了 在SHELL的检查也没有用了吧
steptodream 2010-02-05
  • 打赏
  • 举报
回复
1。我想把SELL加到CRONTAB中执行,使可以在5:00开始执行,那结束怎么办呢?在SHELL里结束?
可以在脚本里写结束 取当前时间的H位 如果等于17就exit 0
2。怎么才能知道SHELL是否正在运行呢?
通过ps -ef | grep 脚本名 是一种方法
3。如果意外结束掉了能否让SHELL自动运行起来?
估计要用一个专门的shell脚本通过crontab执行 来定时检查该脚本是否已经停止
4。这样一直运行的SHELL会不会对系统的稳定性产生影响?
应该是不会 但是如果你的文件量特别大 而且size也特别大 这样就有点不好了

建议:
你不可以让脚本1分钟执行一次吗
这样可以通过crontab机制来调度的你的脚本 让他在5:00-17:00之内每分钟执行一次
这样就不用考虑怎么退出 意外结束掉的情况
当然 如果这样 就要加几句代码判断前一次执行是否已经结束的代码
lylm 2010-02-05
  • 打赏
  • 举报
回复
1。我想把SELL加到CRONTAB中执行,使可以在5:00开始执行,那结束怎么办呢?在SHELL里结束?
>>在shell中结束,crontab只控制启动

2。怎么才能知道SHELL是否正在运行呢?
>>ps查看进程,最好输出到日志

3。如果意外结束掉了能否让SHELL自动运行起来?
>>自己在shell中ps检查,如果进程掉了,重新运行

4。这样一直运行的SHELL会不会对系统的稳定性产生影响?
>>不会
lylm 2010-02-05
  • 打赏
  • 举报
回复
第2个问题我单独运行SHELL 用PS -ef | grep shellname 找不到进程
>>>除非进程已经正常结束或因为某种错误退出

第3个问题SHELL都意外结束掉了 在SHELL的检查也没有用了吧
>>>正如楼上所说,是在另外一个shell去检查
dayu8375 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 steptodream 的回复:]
第2个问题我单独运行SHELL 用PS -ef | grep shellname 找不到进程
------------不可能吧
第3个问题SHELL都意外结束掉了 在SHELL的检查也没有用了吧
------------用一个专门的shell脚本通过crontab执行 来定时检查该脚本是否已经停止
[/Quote]
单独运行的时候确实找不到 shellname的进程,放到CRONTAB中就找到了
还有就是这里的DOCS=`ls -l | awk '{print $8}'` 句子 放到CRONTAB中得到的值竟然是个时间 要把这里的print $8 改为 print $9 不知道为什么请教高手
steptodream 2010-02-05
  • 打赏
  • 举报
回复
第2个问题我单独运行SHELL 用PS -ef | grep shellname 找不到进程
------------不可能吧
第3个问题SHELL都意外结束掉了 在SHELL的检查也没有用了吧
------------用一个专门的shell脚本通过crontab执行 来定时检查该脚本是否已经停止

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧