Как я заметил, вы можете получить строку в Linux и NetBSD из / proc / PID / cmdline
с аргументами, разделенными байтами NUL . Вот быстрый и грязный способ превратить их в работающие командные строки.
perl -ne 'print join(" ", map quotemeta, split(/\000/)), "\n"' /proc/.../cmdline
Результат выглядит так:
xss\-lock \-\-notifier\=notify\-send\ \-\-\ \'foo\ bar\' slock
Вы можете напрямую скопировать его в свою оболочку, чтобы запустить.
Более короткий вариант (требуется Perl 5.10 или новее):
perl -nE '$, = " "; say map quotemeta, split /\0/' /proc/.../cmdline
И пока я на нем, версия для гольфа (40 байт):
perl -nE'$,=" ";say map"\Q$_",split/\0/' /proc/.../cmdline