Как восстановить несколько файлов, которые были перемещены в один?

pstree извлекает имя процесса из / proc / / stat . Это то, что было дано ядру через первый параметр execve (2) ; подробности см. в proc (5) и Что именно происходит, когда я выполняю файл в своей оболочке? . Из последнего вы увидите, что ядро ​​ может запускать сценарии оболочки напрямую (и многие другие «двоичные файлы» - см. Как Mono волшебный? ), но оболочка также вмешивается в некоторые случаи.

Таким образом, если вы запустите

./sleepy.sh

со строкой shebang в начале скрипта, вы увидите sleepy.sh в выводе pstree , потому что это то, что оболочка запрашивает запуск ядра. Если вместо этого вы запустите

sh ./sleepy.sh

, вы увидите sh в выводе pstree .

ps -f или ps u pstree -a ) вместо чтения / proc / / cmdline , чтобы получить командная строка , которая отличается - это параметр argv , присвоенный системному вызову execve . При запуске сценария оболочки с shebang он изменяется, чтобы включить shebang, что, несомненно, почему в вашем случае ps показывает

/bin/bash ./sleepy.sh

(см. Как запускаются программы для лотов подробнее об этом).

2
16.02.2016, 15:15
0 ответов

Теги

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