Слишком длинный список аргументов при использовании du

В Linux вы можете использовать pgrep, чтобы получить PID вероятных подозреваемых, и проверить первый аргумент этих PID (доступный в /proc/$PID/cmdline). /proc/$PID/cmdline имеет все аргументы (включая аргумент 0) процесса, разделенные ASCII NUL (\0).

Что-то вроде:

pgrep bash | xargs -I {} sed -nz '2{p; q}' /proc/{}/cmdline | grep -Fqzx "$0"

Это предполагает, что ваши sed и grep поддерживают строки, разделенные нулями. sed печатает вторую строку соответствующих файлов cmdline (аргумент 1), которая будет именем сценария. Затем grep ищет точное соответствие имени вашего сценария. Можно выполнить полное совпадение в sed, но мне не хочется жонглировать кавычками.

Это не сработает, если вы вызываете свой скрипт по разным путям:

/home/user/myscript
cd /home; usr/myscript
myscript

Однако это должно быть безопасно для пробелов в именах скриптов.

5
25.10.2016, 21:17
0 ответов

Теги

Похожие вопросы