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

sh/bash/dash/ksh/zsh等Shell脚本
回复
yjqg6666
帖子: 77
注册时间: 2008-12-31 17:45

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

#1

帖子 yjqg6666 » 2011-01-31 10:30

这个脚本对我的用途是在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
上次由 yjqg6666 在 2011-01-31 15:18,总共编辑 4 次。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

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

#2

帖子 tusooa » 2011-01-31 11:55

代码: 全选

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

代码: 全选

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

代码: 全选

] ls -ld //
yjqg6666
帖子: 77
注册时间: 2008-12-31 17:45

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

#3

帖子 yjqg6666 » 2011-01-31 13:33

tusooa 写了:

代码: 全选

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

代码: 全选

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

先没想到其它返回值为0的其它方法 确实是()会产生子进程 用:相当不错 学习了 谢谢
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

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

#4

帖子 astolia » 2011-02-04 1:23

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
回复