Linux
Linux + Solaris如何從程序列表中驗證最後一個執行程序
我需要建議:
如何驗證哪個是在我的 linux 或 solaris 中執行的最後一個 scan_sys.sh 程序?
我的目標是殺死所有scan_sys.sh程序,除了最新的scan_sys.sh(最後執行/usr/scan_sys.sh腳本)
ps -ef | grep scan_sys.sh
.
root 367 1 0 Nov 08 ? 0:21 /usr/scan_sys.sh root 27517 27515 0 17:27:18 ? 0:01 /usr/scan_sys.sh root 18939 367 0 Nov 15 ? 0:00 /usr/scan_sys.sh root 18940 18939 0 Nov 15 ? 0:01 /usr/scan_sys.sh root 27515 367 0 17:27:18 ? 0:00 /usr/scan_sys.sh
使用
ps
選項-o
選擇要顯示的欄位以顯示程序 pid、開始時間和命令名稱,可選擇立即選擇您感興趣的程序 (-C
),按開始時間排序,殺死除最後一個以外的所有程序。由於
ps
眾所周知的是命令行選項地獄,因此您必須檢查手冊頁以了解您的實現。對我來說,在 linux 上等效於以下工作(列出適當的 PID):ps -C scan_sys.sh -o pid --sort start | sed '$d'
請記住用單引號(至少 in )引用
$
in腳本,否則它將擴展為 environment variable 。您可以發送 PID 以殺死,例如通過 xargs 或通過命令替換(或in )。sed``bash``d``````$()``bash