Что-нибудь с PPID 1 является, по большей части, вероятно, демон. Но есть ситуации, которые могут возникнуть, где процессы могут стать детьми 1, которые не являются технически демонами. Таким образом, методы, которые я обсуждаю ниже, должны продемонстрировать, как вы пойдете в определение, если PID принадлежит 1, не обязательно, что его реальный демон.
$ ps -xj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
8420 1211 1211 8420 pts/4 1211 S+ 1000 0:01 ssh dufresne
1 2276 2275 2275 ? -1 Sl 1000 0:48 /usr/bin/gnome-keyring-daemon --daemonize --login
2196 2278 2278 2278 ? -1 Ssl 1000 0:39 gnome-session
1 2288 2278 2278 ? -1 S 1000 0:00 dbus-launch --sh-syntax --exit-with-session
1 2289 2289 2289 ? -1 Ssl 1000 6:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
1 2358 2289 2289 ? -1 Sl 1000 0:01 /usr/libexec/gvfsd
Выдержка из Википедии может пролить свет на вещи, но оно тоже оставляет вещи немного расплывчатыми на том, как на самом деле определить, является ли процесс демоном или нет.
Выдержка из Википедиив среде Unix, родительский процесс демона часто является часто, но Не всегда процесс инициализации. Демон обычно либо создается Процесс раздвинуть детский процесс, а затем немедленно выходить, таким образом вызывая init, чтобы принять дочерний процесс или процессом init непосредственно запускающий демон. Кроме того, демон запущен Вылет и выход обычно должен выполнять другие операции, такие как диссоциировать процесс от любого контролирующего терминала (TTY). Такой Процедуры часто реализуются в различных удобных процедурах, таких как демон (3) в Unix.
Примечание. О системах, которые используют SystemD (Red Hat Distries, такие как Fedora), обычно нет INIT
, а вместо этого:
$ ps -j -1
PID PGID SID TTY STAT TIME COMMAND
1 1 1 ? Ss 0:42 /usr/lib/systemd/systemd --switched-root --system --deserialize 20
это процесс с PID 1.
На системе Debian / Ubuntu у них будет процесс, по-прежнему по имени init
:
$ ps -j -1
PID PGID SID TTY STAT TIME COMMAND
1 1 1 ? Ss 0:02 /sbin/init
и вот причина, по которой можно было сложно определить, является ли что-то демон или Не тогда, когда его PPID 1:
процесс может стать ребенком процесса init, ( Примечание: , что INIT
процесс PID 1), когда их родитель убит или Окончали их, эти процессы не обязательно являются демонами, но все равно будут отображаться как имеющие свой PPID, равный 1 .
Итак, чтобы сделать решимость, является ли что-то демоном или, скорее всего, потребует аккумулятора тестов, а не просто ищет, чтобы увидеть, является ли это PPID 1.
, чтобы определить Если что-то является демоном, который, вероятно, придется приберем к различным тестам, таким как:
Sudo Service ...
? Так что мы должны прибегать к «утки, набрав», если он доворачивает, и плавает, вероятно, утка, но даже вышеуказанные характеристики могут обмануть вас.
-121--52683-
, который, безусловно, неверно.
Судо возникли около 1980 года ¹
Debian было впервые объявлено в 1993 году .
¹ Я использовал Sudo
SUDO Сам еще 80-х годов, прежде чем Linux был впервые выпущен, не говоря уже о Debian.
Но если вы предпочитаете иметь более гибкий способ:
Иметь "надежный" способ получать время файла в "переносном" формате, не зависящем от того, изменился ли файл последний раз в течение 6 месяцев и т.д:
так что вы могли бы сделать это, чтобы получить время, подходящее для прикосновения: