Я прочитал несколько сообщений здесь о случаях, когда pgrep «кажется» возвращаться, даже если он никогда не должен. Кажется, что ключ - это разница между функциями bash и sh. За исключением того, что в моем случае я подтвердил, что sh действительно является ссылкой на bash.Подтверждение о возврате себя pgrep
- Я бегу на SuSE 12 x86_64
- /бен/ш найти ссылку на Баш
- /бен/Баш реальный двоичный
Я сценарий Ruby, который вызывает pgrep так:
cmd="/usr/bin/pgrep -lf \"#{target}\""
pidList=`#{cmd}`
мне нужно использовать всю командную строку, потому что я на самом деле, используя аргумент, чтобы однозначно идентифицировать конкретный процесс «Java».
Теперь, из-за какой-то несвязанной глупости, я почти сразу делаю ps -p
на каждом из возвращенных предметов. Некоторое время это вызывало у меня большое горе, потому что ps иногда ничего не возвращал. В конце концов я смог поймать случай, когда ps на pid вернул команду pgrep. Но это была сама команда pgrep, а не что-то вроде sh -c "pgrep -f blah"
Чтобы резюмировать:
pgrep никогда не возвращает себя. Но различия в sh vs bash могут привести к тому, что он покажет подоболочку. Но я подтвердил, что sh является ссылкой на bash, поэтому не должно быть разницы в поведении.
Что я подозреваю (и ищу подтверждение), заключается в том, что создается дополнительная подкоманда из-за обратных ссылок Ruby, и это то, что есть (только иногда ... проблемы с синхронизацией?), Подхваченные командой pgrep.
Это была настоящая боль, и я хочу убедиться, что исправление, которое я реализую, действительно заставит проблему уйти. Учитывая код я работаю, я либо собираюсь
- присоединять
| grep -v grep
к концу моей команды - выплеснуть любые результаты, содержащие «Grep» в то время как цикл по возвращенным результатам в Рубине сценарий
Я фигурирую # 2 быстрее, но все равно раздражает меня, что я должен отфильтровать сам pgrep.
Я на правильном пути или вы думаете, что что-то еще играет?
Спасибо за ваше время!
Когда 'bash' вызывается как' sh' он ведет себя как POSIX 'sh', не' bash'. –
Ах, это будет недостающая часть головоломки! Благодаря! –