我正在尝试编写一个脚本(它总是在后台运行),以便在发现它正在运行时终止进程。
脚本总是在循环迭代后退出。我该如何解决这个问题?
我的剧本:
#!/bin/bash PROCESS=`ps A | grep iTunes | grep -v grep` for i in 'seq 1 $max' do if [ "$?" -ne "1" ]; then killall iTunes fi done
答案 0 :(得分:1)
使用:
#!/bin/bash
killProc() {
while true
do
killall -9 $1 2>&1 >> /dev/null
sleep $2
done
}
killProc iTunes 5 #This will kill iTunes every 5 seconds.
答案 1 :(得分:1)
运行如下命令:
while sleep 60;do killall iTunes;done
要每五分钟运行一次命令,请运行crontab -e
(或EDITOR=nano crontab -e
)并添加如下所示的行:
*/5 * * * * killall iTunes
另一种选择是将此plist保存为~/Library/LaunchAgents/killitunes.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>killitunes</string>
<key>ProgramArguments</key>
<array>
<string>killall</string>
<string>iTunes</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
然后运行launchctl load ~/Library/LaunchAgents/killitunes.plist
。