我正在嘗試編寫一個腳本(它總是在後臺運行)來終止一個進程,一旦發現它正在運行。一個shell腳本,當它被發現正在運行時,終止一個進程
該腳本始終在循環迭代後退出。我如何解決這個問題?
我的腳本:
#!/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
我正在嘗試編寫一個腳本(它總是在後臺運行)來終止一個進程,一旦發現它正在運行。一個shell腳本,當它被發現正在運行時,終止一個進程
該腳本始終在循環迭代後退出。我如何解決這個問題?
我的腳本:
#!/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
用途:
#!/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.
兩個循環不是必需的 – lurker
運行如下命令:
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
。
您的腳本包含多個語法錯誤。此外,什麼是'最大'。考慮閱讀教程來了解語法。 – devnull
您設置了「PROCESS」,但不要在任何地方使用它。 '$ max'的值似乎沒有在任何地方設置。如果您在顯示的「seq 1 $ max''上使用單引號,而不是反碼,則循環將運行1次(值爲」$ i ='seq 1 $ max'')並停止。 – lurker
嗯,我對shell腳本很陌生。準確的15分鐘! – Sam