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
- 系统: 践兔
-
联系:
#2
帖子
由 tusooa » 2011-01-31 11:55
这样子写,要多开一个子进程的。
好点。
ps: 关机,关机。。。
-
yjqg6666
- 帖子: 77
- 注册时间: 2008-12-31 17:45
#3
帖子
由 yjqg6666 » 2011-01-31 13:33
tusooa 写了:
这样子写,要多开一个子进程的。
好点。
ps: 关机,关机。。。
先没想到其它返回值为0的其它方法 确实是()会产生子进程 用:相当不错 学习了 谢谢
-
astolia
- 论坛版主
- 帖子: 6703
- 注册时间: 2008-09-18 13:11
#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