Это ясно отвечает на этот вопрос: https://stackoverflow.com/questions/9305992/linux-threads-and-process
В моем случае все дочерние процессы являются потоками и поэтому не видны в ps -ef
, а только в pstree.
@icarus дайте мне решение:
Замените временно / usr / bin / perl
этим скриптом:
#!/bin/bash
exec 7>>/tmp/procstuff
date >&7
printf ">%s<\n" "$@" >&7
ls -lR /proc/$$ >&7
cat >&7
sleep 400
Затем, заглянув в / tmp / procstuff
, мы узнали, что это был процесс моего хостинг-провайдера.
Можете ли вы попробовать это ниже
pgrep '^$' | while read pid; do
ps -f $pid
ls -l /proc/$pid/cmdline
netstat -tlp | grep '\<'$pid'\>'
echo kill $pid # remove the echo after testing
done
Если pgrep '^ $'
ничего не перечисляет, то, возможно, нормальный ps - o comm = -U myuser | od -c
, чтобы понять имя процесса, поэтому вы можете использовать pgrep
, чтобы найти только процессы с таким именем
Надеюсь, это сработает.