有個需求是,每隔4個小時會跑一遍資料收集的爬蟲,因為這個爬蟲指令碼寫的很爛,所以有時候進入死迴圈後,程序就永遠不遠停掉,因此需要寫個定時任務,定時清理這些無用程序。
- 首先在shell上學習如何清理指定程序
- ps -ef|grep -v grep|grep ***x|cut -c 10-14|xargs kill -9
- 命令找到後,就需要把這個命令放到指令碼裡,然後定時執行這個指令碼
**如下
#!/bin/bash
#ps -ef|grep strong|cut -c 9-15|xargs kill -9
pid=ps -ef|grep strong|cut -c 9-15
kill -9
$pid
上面的寫法很快就出現了問題,即在外面可以正常執行的語句,通過=賦值後就會出現問題,因為管道符和=具有相同的優先順序,因此會有如下報錯:
[root@nichuiniu cleanprocess]# sh cleanprocess.sh
cleanprocess.sh: line 3
: -ef: command not found
原因是程式自動把pid=ps作為一段,後面的**作為一段
正確的寫法如下:
#!/bin/bash
#ps -ef|grep strong|cut -c 9-15|xargs kill -9
pid=$(ps -ef|grep strong|cut -c 9-15)
kill -9
$pid
通過把執行的結果用$符號包裹起來,作為乙個變數傳下去使用。 Shell指令碼除錯技巧
方式一 通過echo方式 功能 最簡單的除錯方法,可以在任何懷疑出錯的地方用echo列印變數 場合 所有懷疑可能有問題的地方,省略了所有 示例 echo var 方式二 通過選項方式 ncxv n 功能 讀取shell指令碼,但不實際執行 場合 用於測試shell指令碼中是否存在語法錯誤 示例 ba...
shell小知識小技巧
1 local config config 1,如果沒有第乙個引數,那麼config netowk 2 字串可以用 來比較 數字可以用 來比較 3 shell函式傳引數的時候,local var1 hello local var2 word 傳這兩個引數到shell函式 fun shell寫成 fu...
幾個shell小技巧
1.expr 命令 由於bash 是功能有限的直譯器,所以自身並沒有支援太多的算術運算,一切都是字串。所以如果涉及到算術運算,需要借助其他的工具,比如bc 功能比較強大的小工具 expr 和 算術擴充套件.expr 支援幾個常見的算術運算 取模 expr還支援常見的關係運算,比如 題外話 如果要想計...