Unixで最新の再起動プロセスを確認するには?

Unixで最新の再起動プロセスを確認するには?

"p"コマンドでプロセスを確認していますが、出力は次のようになります。

UID         PID   PPID  C STIME TTY          TIME CMD                                    
myapp    10235  20365 99 Feb15 ?        11-15:01:41 cont AppRating  
myapp    20168  20365 99 01:39 ?        18:29:08 cont AppRating     
myapp    20322      1  0  2017 ?        18:07:14 monitor -p -a                          
myapp    20355  20322  0  2017 ?        12:34:55 agent -n                              
myapp    20780  20322 10  2017 ?        12-02:36:07 bsus -n                            
myapp    40675  20365 99 Feb16 ?        10-10:34:21 cont AppRating  
myapp    60749  20365 99 Feb21 ?        1-22:12:18 cont AppRating    
myapp   143363  20365  4 Feb26 ?        08:04:12 cont TimeOutSession    
myapp   143569  20365  1 Jan31 ?        05:57:05 cont AMn               
myapp   242818  20365 99 Feb21 ?        1-00:00:38 cont AppRating  

さて、前日以降のSTIMEの進捗状況を確認したいと思います。
今日の日付が2018年2月27日であるとします。その後、2018年2月26日午前0時以降に開始されたプロセスがあるかどうかを確認したいと思います。
その場合は、その行の前にnot okを印刷してください。以下の出力と同じです。

myapp    20168  20365 99 01:39 ?        18:29:08 cont AppRating --> NOTOK  
myapp   143363  20365  4 Feb26 ?        08:04:12 cont TimeOutSession --> NOTOK

それ以外の場合は、「OK」を印刷してください。

ベストアンサー1

あなたのpコマンドは同じタイプの出力を生成するようで、エイリアスかもしれませんps -Af

今日開始されたプロセスの場合、STIME形式は、今日以前に開始されたプロセスの場合はMonDDが使用され、YYYY形式が使用されるため、代わりに今日を想定して昨日または今日開始されたプロセスが報告されます。 1月の最初のプロセスでは、STIMEが昨日MonDDまたはHH:MM形式の項目のみを見つけることができます。

これはGNU実装を想定していますdate

p | awk -v yesterday="$(LC_ALL=C date -d yesterday +%b%d)" '
  NR > 1 {$0 = $0 " --> " ($5 == yesterday || $5 ~ /:/ ? "NOTOK" : "OK")}
  {print}'

おすすめ記事