Извините, новичок, которого стоит критиковать.
Я хотел сгенерировать скрипт для входа во все каталоги в current_directory с "bifn*0.2e" в имени, а затем автоматически удалять файлы с "acc" в имени каждую минуту. Они постоянно генерируются другим процессом. Вот что у меня есть, и это, кажется, работает.
#!/bin/bash
while true
do
find /current_directory/bifn*0.2e* -name '*acc*' -mmin +1 -delete
sleep 60
done
Однако после того, как я запустил скрипт ./auto_remove, я нажал Ctrl+Z и bg
оставил его в фоновом режиме. Я хотел, чтобы этот скрипт продолжал удалять файлы даже после того, как я выйду из терминала. Эта часть тоже работает. Но теперь я не могу убить то, что он делает, и не вижу никаких доказательств того, что скрипт работает (кроме того, что файлы acc удаляются!). Я пробовал вводить ps fjx
или jobs.
также пробовал перезапустить скрипт с закомментированной строкой find.
Так что, пожалуйста, помогите мне остановить то, что он делает! И, на будущее, как я могу более элегантно сделать то, что я хочу сделать, имея возможность прекратить его, когда это необходимо?
решение1
Ну, я нашел проблему с завершением. Мне пришлось войти в конкретный узел, который выполнял этот скрипт, чтобы затем выполнить kill. Я все еще не уверен, как избежать этого в будущем.
решение2
Половина скрипта не нужна. Уберите все проверки времени. Просто установите его для проверки имени и удаления. Затем установите его в crontab на каждую минуту. Если вы хотите остановить его по какой-то причине, просто остановите cron, закомментировав строку выполнения, и перезапустите cron