Linux

Linux + Solaris如何從程序列表中驗證最後一個執行程序

  • November 25, 2012

我需要建議:

如何驗證哪個是在我的 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

引用自:https://unix.stackexchange.com/questions/56638