shell指令碼小技巧

2021-08-07 14:23:06 字數 874 閱讀 9025

有個需求是,每隔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還支援常見的關係運算,比如 題外話 如果要想計...