Главная причина позволить доступ для записи без доступа для чтения состоит в том, что он упрощает управление полномочиями, и в ядре и в пользовательских программах. Существует два полномочий, один для чтения и один для записи, и ими управляют независимо. Это не ошибка, так как зарегистрированное поведение совпадает с фактическим поведением и нет никакого серьезного основания потребовать другого поведения.
Наличие полномочий записи без полномочий чтения не имеет большого смысла для регулярных файлов. Это действительно имеет смысл для различных специальных файлов.
/proc
и /sys
это позволяет программам пространства пользователя отправлять команды в ядро путем записи в конкретный файл. Если та команда не обеспечивает обратной связи, специальный файл сделан только для записи.Можно уничтожить процессы по имени. Например, на Linux, *BSD и Солярис, pkill myprogram
уничтожает все процессы, имя которых содержит myprogram
(используйте pkill '^myprogram$'
для точного совпадения). При выполнении его как некорневой пользователь, только что процессы пользователя будут уничтожены, и существуют дальнейшие опции управлять соответствием (см. руководство по системе для деталей).
Если Вы хотите конкретно быть нацеленными на процессы, запущенные планировщиком, и Вы уничтожаете процессы вручную, можно работать ps f
(Только Linux) или pstree
(Только Linux) или ptree
отобразить процессы в дереве и видеть, какие процессы были запущены кроном.
Если Вы хотите смочь уничтожить эти процессы автоматически в самодельном методе, заставьте их сохранить свой идентификатор процесса в файле. Этот вид файла называют pidfile, когда он используется, чтобы только иметь единственный экземпляр выполнения процесса (который может или не может быть чем-то, что Вы хотите). Если Вы хотите несколько экземпляров, храните PIDs в отдельных файлах в общем каталоге; вот отрывок оболочки, который делает это:
pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"
Лучшее решение, если у Вас есть трудные критерии для обнаружения безудержных процессов, состоит в том, чтобы использовать общую программу мониторинга, или в простых случаях просто ставит предел, сколько времени процессу позволяют работать. Можно найти эти ссылки полезными:
Я предложил бы вытолкать их PID ($$) в файл после порождения их. Можно затем использовать это для уничтожения процесса.
Должно работать основное ответвление попытки/выгоды на большинстве языков программирования для нахождения бесконечных циклов или других случаев ошибок. Возможно неактивный/безразличный таймер на процессах для наблюдения за зависает.