Печать на терминал требует времени. Когда программа печатается быстрее, чем bash может не отставать, нажатие CTRL + C не поможет, потому что весь вывод уже добавлен в конвейер. Вы можете остановить find
на полпути, но так как у него уже было столько хитов, bash продолжает печатать то, что находится в стадии разработки, даже если вы убили процесс.
Добавление & не поможет ни потому, что сеанс терминала все еще подкрепляется IO. Просто запустите процесс в фоновом режиме, не означает, что bash не собирается печатать IO.
Вот простой сценарий bash. Запустите это с помощью &, и вы все равно увидите распечатку 1s.
while [[ 1 -eq 1 ]]
do
echo 1; sleep 1;
done
Главное, чтобы попробовать перенаправить IO в файлы.
find -------- 2> /dev/null
Это устраняет ошибки «Разрешения на отказ» в/dev/null. Если вы запускаете этот скрипт как обычный пользователь, вы, вероятно, получаете много таких ошибок.
find ---------- 1> find.txt
Это поместит положительные хиты в find.txt, так что вы можете вернуться и занять свое время, читая положительные хиты. И вместе,
find ---------- 2> /dev/null 1> find.txt
Любая вероятность того, что процесс поиска был в невосполнимом сне? Если это проверка linux 'ps aux' и посмотреть, находится ли она в состоянии D. Это может произойти, например, если у вас есть монтирование NFS, но сервер недоступен. – FatalError
Я запускаю linux на ssh и графическом интерфейсе, и я даже не мог получить доступ к таблице ps во время работы скрипта. Придется закрыть программу и снова подключиться. Сам сценарий выглядит правильно? – DR29
Откройте вторую сессию для проверки. Ничто в вашем скрипте не должно зависеть от обычных условий. – FatalError