在一段时间内在Unix上超越用户进程监视

时间:2016-04-29 23:56:59

标签: unix

我是行政前线的新手。我有一个要求: 确定用户流程(有一个提交流程的用户列表),这些流程仍处于活动状态,并且已在3/4天前提交。

我的方法:

  1. 有一个包含用户列表的文本文件。
  2. 循环并查找用户生成的当前进程并将其存储为文件。
  3. 用格式和grep。
  4. 替换日期变量

    然而,我被困住了如何获得:提交3/4天前。我的代码等同于一天。

    #!/bin/sh
    rm -f psinfo.txt
    rm -f psinfo_backdated.txt
    
    for i in `cat user.lst `;
    do
        ps -ef | grep "$i" >> psinfo.txt
    done
         grep `date -d'2 day ago' +%b%d` psinfo.txt > psinfo_backdated.txt
    

    我真的需要你对这位大师的评论和回答。

1 个答案:

答案 0 :(得分:0)

  

如果有人可以告诉我们是否可以从像Less这样的文件中执行日期范围的grep   比4月27日格式。我可以让我的脚本工作。等待大师的   对此做出回应。

Apr27这样的时间格式不适合该任务,也因为它不包含年份,这在一年开始时是必需的。幸运的是,有一个更好的格式用于进程的开始时间。取代

    ps -ef | grep "$i" >> psinfo.txt

    ps -oetime=ELAPSED_TIME -ouser,pid,ppid,cpu,tty,time,args -u$i >>psinfo.txt

(您可能希望从第二个-o…中删除不需要的字段)。然后从开始的时间以

的形式表示
  

[[ - ] 小时 ] 分钟

- 您可以使用awk轻松过滤,e。 G。在3天或更多天前启动流程:

awk '{ if ($1~/-/ && int($1)>2) print }' psinfo.txt >psinfo_backdated.txt