On 2015-11-23, Oleksandr Gavenko wrote: > Я попробовал: > > $ sudo auditctl -w /tmp -p w > > При старте xterm в логе есть строчка: > > type=SYSCALL msg=audit(1448308853.684:34): arch=c000003e syscall=87 > success=yes exit=0 a0=24218a0 a1=7ffe55d12880 a2=7ffe55d12880 > a3=7ffe55d12640 items=2 ppid=3522 pid=12342 auid=4294967295 uid=1000 > gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 > tty=(none) ses=4294967295 comm="xterm" exe="/usr/bin/xterm" key=(null) > > Тут у нас pid, ppid, uid, gid, а также: > > comm="xterm" exe="/usr/bin/xterm" > > что очень удобно для быстро исчезающих скриптов.
Я боялся что не будет имени исполняемого файла. Есть lastcomm из пакета acct (который также запускает сервис): bash# lastcomm lastcomm user pts/3 0.00 secs Mon Nov 23 22:38 sh user pts/8 0.00 secs Mon Nov 23 22:37 awk user pts/8 0.00 secs Mon Nov 23 22:37 sed user pts/8 0.00 secs Mon Nov 23 22:37 man user pts/8 0.01 secs Mon Nov 23 22:37 Согласно ACCT(5): If the kernel is built with the process accounting option enabled (CONFIG_BSD_PROCESS_ACCT), then calling acct(2) starts process accounting, for example: acct("/var/log/pacct"); /var/log/pacct - бинарный файл, lastcomm помагает его читать. Мне очень жаль что нет полного пути к команде и нет опций запуска и нет PWD. Эта информация очень бы помогла в отладке. Можно попробовать стартовать пользователькую сесию с $ cat ~/.xinitrc ... strace -e execve -o ~/strace.log -f LASTCOMMAND Будет вылазить: bash# strace -e execve -f sh -c "/bin/echo ok" execve("/bin/sh", ["sh", "-c", "/bin/echo ok"], [/* 59 vars */]) = 0 Process 14651 attached [pid 14651] execve("/bin/echo", ["/bin/echo", "ok"], [/* 59 vars */]) = 0 ok [pid 14651] +++ exited with 0 +++ --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=14651, si_uid=1000, si_status=0, si_utime=0, si_stime=0} --- +++ exited with 0 +++ Там пытаться воспроизвести проблемную ситуацию. Текущий каталог мониторить по: $ strace -e chdir,execve -f xterm Далее нашел: $ sudo forkstat 23:06:33 exec 15004 /bin/bash -c exec xterm -e bash -i 23:06:33 exec 15004 xterm -e bash -i 23:06:33 fork 15004 parent xterm -e bash -i 23:06:33 fork 15005 child xterm -e bash -i 23:06:33 exec 15005 bash -i 23:06:33 fork 15005 parent bash -i 23:06:33 fork 15006 child bash -i 23:06:33 fork 15006 parent bash -i 23:06:33 fork 15007 child bash -i 23:06:33 exec 15007 dircolors -b /home/user/.dircolors 23:06:33 exit 15007 0 0.001 dircolors -b /home/user/.dircolors 23:06:33 exit 15006 0 0.001 bash -i 23:06:33 fork 15005 parent bash -i 23:06:33 fork 15008 child bash -i 23:06:33 fork 15008 parent bash -i 23:06:33 fork 15009 child bash -i 23:06:33 exec 15009 ls /etc/bash_completion.d 23:06:33 exit 15009 0 0.002 ls /etc/bash_completion.d ... Это не поможет топикстартеру, но интересно было разобраться, а то смешно, когда то на работе в цикле грепали ps: while true; ps -e | grep COND sleep 1 done -- Best regards!