find / '(' -type f -or -type d ')' \
'(' '(' -user nobody -perm -u=w ')' -or \
'(' -group nobody -perm -g=w ')' -or \
'(' -perm -o=w ')' ')' -print
Это найдет все файлы и каталоги, принадлежащие nobody
это перезаписываемо их владельцем, или которые принадлежат группе nobody
это - перезаписываемая группа, а также все файлы или каталоги, которые перезаписываемы любым.
В Вашем комментарии Вы разъясняетесь:
Я на самом деле ищу одноэтапную опцию к PS или pgrep (или подобный) который только выводы "активные" процессы...
Я боюсь, что Вам не повезло с текущими ps/pgrep реализациями.
Сообщение, фильтрующее как это, полагается на полное понимание начального вывода, который я не имею...
Но можно получить то понимание и, еще лучше, управление, которые производят, как желаемый. Попробуйте что-то вроде этого:
function pgrep_live {
pids=$(pgrep "$1");
[ "$pids" ] || return;
ps -o s= -o pid= $pids | sed -n 's/^[^ZT][[:space:]]\+//p';
}
Это возвратит pids для любых процессов pgrep'd, соответствующих Вашей входной строке, какие процессы "доступны для нормальной эксплуатации", то есть, ни dead+unreaped (Z), ни остановился (T).
можно попробовать-v опцией grep, которые инвертируют regex как это:
for p in $(pgrep ^gnuserv$) ;do ps x |grep "^$p" | grep -v \<defunct\> ;done
sed
и grep
в значительной степени то же в этой ситуации... Я на самом деле ищу одноэтапную опцию к PS или pgrep (или подобный) который только выводы "активные" процессы... Сообщение, фильтрующее как это, полагается на полное понимание начального вывода, который я не имею..., например. [gnuserv] <defunct>
взял меня полностью врасплох (что другие неожиданности я могу ожидать?..
– Peter.O
23.05.2011, 16:41