Chinaunix

标题: 请教:如何得到别人的工作目录呢? [打印本页]

作者: bluesgone    时间: 2010-07-06 16:53
标题: 请教:如何得到别人的工作目录呢?
各位大虾,你们好,
用shell就可以实现对aix系统的某一时刻的操作监控;
for ip in `cat $HOME1/txt/man.txt|awk -F\| '{print $1}'`
do
grep $ip $HOME1/txt/man.txt | awk -F\| '{print "["$2"]在做什么?" }'
for pts in `who|grep $ip|awk -F\/ '{print $2}'|awk '{print $1}'`
do
ps -ef|grep "pts\/$pts "|grep -v grep|grep -v ksh
done
done


man.txt为一个ip的列表,说明ip地址和主人的mapping对照关系;
现在想知道如何得到某个ip所处的工作目录,因为我想知道他/她在做vi makefile
的时候,是在哪个目录做的;
有兴趣的朋友帮忙看一下如何实现,谢谢。
作者: bluesgone    时间: 2010-07-07 08:57
回复 1# bluesgone


    click for 46 times, but nobody know?

   waiting for your answer, thx.
作者: waker    时间: 2010-07-07 09:05
找到他vi所在进程的pid 到/proc里查询该进程的cwd
作者: bbgg1983    时间: 2010-07-07 09:40
回复 3# waker


    学习了,版主的水平果然是高
作者: Shell_HAT    时间: 2010-07-07 09:51
  1. while IFS=\| read column1 column2; do
  2.     echo "Where is ${column2} using vi?";
  3.     for pts in `who | awk -v ip=${column1} '$0~ip{print $2}'`; do
  4.         pid=`ps -ef | grep "${pts}.*vi" | grep -v "grep" | awk '{print $2}'`
  5.         ls -l /proc/${pid} | awk -F '>' '/cwd ->/ {print $2}'
  6.     done
  7.     echo
  8. done < $HOME1/txt/man.txt
复制代码

作者: miniqq    时间: 2010-07-07 09:53
你用AIX5L吗?装个 lsof

lsof -p $PID
就可以看到你想看的
作者: bluesgone    时间: 2010-07-07 15:38
本帖最后由 bluesgone 于 2010-07-07 15:45 编辑

我在aix版也发表了这个问题,斑竹说用procwdx 就可以了,我尝试了一下,的确可以。不过,
对于脚本执行用户外的其他用户的当前工作目录,就无法取得了。
存在权限的问题。
对于你们说的这种看cwd的方式,也必须拥有其他用户的权限才行,否则看不到其他用户在啥目录下做什么。
可能这个也是进程的一种保护机制吧,避免除了root以外用户的进程破坏其他的用户进程。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2