Правило Adblock для блокировки g + / twitter и т. Д. [Закрыто]

  • Я на 99,9% уверен, что проверка наличия / proc / PID (и каталога) на 98% так же надежна, как и kill0 техника. Причина, по которой 98% не являются 100%, - это вопрос, который Стивен Харрис затронул (и отскочил) в комментарии - а именно возможно, файловая система / proc не смонтирована. Может быть справедливо утверждение, что система Linux без / proc является поврежденной, деградированной системой - в конце концов, такие вещи, как ps , top и lsof , вероятно, не будут работать - , поэтому это может не быть проблемой для производственной системы. Но (теоретически) возможно, что он никогда не был смонтирован (хотя это может помешать переходу системы в нормальное состояние), это определенно возможно для его нужно отключить (я тестировал его 1 ), и считаю, что нет никакой гарантии, что он будет существовать (т. е. , это не требуется POSIX). И, если система полностью не заморожена, kill будет работать.
  • В комментарии Стивена говорится о «обращении к файловой системе» и «использовании собственных системных вызовов». Я считаю, что это в основном отвлекающий маневр.
    • Да, любая попытка получить доступ к / proc требует чтения корневой каталог, чтобы найти файловую систему / proc . Это верно для любой попытки получить доступ к любому файлу по абсолютному имени пути, включая элементы в / bin , / и т. Д. и / dev . Это происходит так часто, что корневой каталог обязательно кэшируется в памяти на все время жизни (время безотказной работы) системы, поэтому этот шаг можно выполнить без каких-либо операций с диском. О. И если у вас есть индексный дескриптор / proc , все остальное, что происходит, находится в памяти.
    • Как получить доступ к / proc ? С stat , open , readdir и т. Д., которые являются собственными системными вызовами каждый бит, как и убить .
  • Вопрос касается запущенного процесса. Это скользкая фраза. Если вы действительно хотите проверить, работает ли процесс (т. Е. В очереди выполнения; возможно, текущий процесс на каком-то ЦП; не спит, не ожидает или не остановлен) ), вам может потребоваться выполнить ps PID и прочитать вывод , или посмотреть на / proc / PID / stat . Но я не вижу намека в вашем вопросе или комментариях на то, что вас это беспокоит.

    Слон в комнате, однако, заключается в том, что процесс зомби 2 может быть трудно отличить от процесса, который жив и здоров. kill0 работает с зомби, и существует / proc / PID . Вы можете идентифицировать зомби с помощью методов, перечисленных в предыдущем абзаце (выполнив ps PID и прочитав вывод, или просмотрев / proc / PID / stat ). Мой очень быстрый и случайный (т. Е., не очень тщательное) тестирование предполагает, что вы также можете сделать это, выполнив readlink или lstat на / proc / PID / cwd , / proc / PID / root , или / proc / PID / exe - они не работают на зомби. (Однако они также не будут работать в процессах, которыми вы не владеете.)

  • ____________
    1 , если -f ( f orce) не работает, попробуйте -l ( l azy).
    2 то есть процесс, который завершился / умер / завершился, , но чей родитель еще не выполнил ожидание .

1
11.04.2013, 02:20
0 ответов

Теги

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