分页: 1 / 1

分享一个脚本 大家来修改完善下

发表于 : 2011-01-31 10:30
yjqg6666
这个脚本对我的用途是在virtualbox下的程序(如迅雷)让他完成任务后自动关机, 在lin下运行(我把这个脚本文件放在/usr/local/bin下并加上的a+x权限)

代码: 全选

pgrepdown VirtualBox
每隔10秒检查VirtualBox进程是否运行 没运行lin就在5分钟后关机 不是立即关机 是有时候如果还想用电脑还没关机的时候还可以取消关机命令

代码: 全选

cat /usr/local/bin/pgrepdown

代码: 全选

#!/bin/sh
#功能: 间隔一段时间检查某个程序是否运行 如不在运行则在5分钟后关机
#用法: 命令后接要检查的程序进程名
#license: GPL v3
#作者: yjqg6666([email protected]); tusooa;
#版本: v0.1 alpha1

#参数检查
if [ "$#" -eq "0" ];then
    echo "请指定检查的进程名."
    echo "用法: $* 要检查的进程名"
fi

#主程序
until [ "$?" -ne "0" ];do
      pgrep $1 >>/dev/null && echo "该程序在运行中..."
      sleep 10s
      clear
      pgrep $1 >>/dev/null
done
sudo /sbin/shutdown -h +5

Re: 分享一个脚本 大家来修改完善下

发表于 : 2011-01-31 11:55
tusooa

代码: 全选

(exit 0)
这样子写,要多开一个子进程的。

代码: 全选

:
好点。
ps: 关机,关机。。。

Re: 分享一个脚本 大家来修改完善下

发表于 : 2011-01-31 13:33
yjqg6666
tusooa 写了:

代码: 全选

(exit 0)
这样子写,要多开一个子进程的。

代码: 全选

:
好点。
ps: 关机,关机。。。

先没想到其它返回值为0的其它方法 确实是()会产生子进程 用:相当不错 学习了 谢谢

Re: 分享一个脚本 大家来修改完善下

发表于 : 2011-02-04 1:23
astolia
yjqg6666 写了:

代码: 全选

#!/bin/sh
#功能: 间隔一段时间检查某个程序是否运行 如不在运行则在5分钟后关机
#用法: 命令后接要检查的程序进程名
#license: GPL v3
#作者: yjqg6666([email protected]); tusooa;
#版本: v0.1 alpha1

#参数检查
if [ "$#" -eq "0" ];then
    echo "请指定检查的进程名."
    echo "用法: $* 要检查的进程名"
fi

#主程序
until [ "$?" -ne "0" ];do
      pgrep $1 >>/dev/null && echo "该程序在运行中..."
      sleep 10s
      clear
      pgrep $1 >>/dev/null
done
sudo /sbin/shutdown -h +5
两个问题:
1、无参数的情况下不就直接进循环了?
2、有必要一遍遍输出"该程序在运行中..."吗?只输出一次就行了吧。反正我觉得循环这样就够了

代码: 全选

pgrep $1 >/dev/null && echo "该程序在运行中..." && while pgrep $1 >/dev/null
do
    sleep 10s
done