開始前に使用されたプロセスを割り当てる方法PIDs
再起動後にプロセスに割り当てられるRHEL7?
確率はいくらですか?PID
つまり、システムの再起動後に開始されたプロセス(再起動前に使用したのと同じプロセス)にRHEL7
同じプロセスを割り当てることは統計的にどの程度可能ですか?PID
PID
編集する:
例:再起動する前に、PID 544を持つデーモンAがあり、マシンが再起動され、再起動後にデーモンAが起動し、PID 544が割り当てられました。
ベストアンサー1
initシステムが決定的である場合、そのinitシステムによって開始されたデーモンは、再起動時に同じpidで始まる可能性が高くなります。なぜなら、同じコードが起動するたびに実行されるからです(たまにランダム化やfsck
再表示selinux
などがありますが)。 - )コードを起動するたびに)。
しかし、RHEL7ではsystemd
非決定的です。 PID は順次割り当てられますが、systemd
タスクは複数のコアで並列に実行でき、さまざまなハードウェアまたはネットワーク サービスを待つこともできます。プロセスリストの前後に何が起こるのか見てみましょう。
$ ps axo pid,command | sort -n > before
$ sudo reboot
...
$ ps axo pid,command | sort -n > after
$ comm -12 before after | grep -v \\[
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
PID COMMAND
1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
745 /usr/lib/systemd/systemd-logind
864 /usr/sbin/NetworkManager --no-daemon
$
[
したがって、これらは同じPIDを持つ2つのプロセスです(明らかなランダムではなく、「PID eins」とラベル付きカーネルスレッドを除く)。 30回の再起動でほぼ同じ情報が記録されており、systemd
これらの再起動中にpidをランダムに指定するのに非常に便利です/usr/lib/systemd/systemd-logind
。
PID PERCENTAGE
733 5%
734 5%
737 15%
739 5%
743 5%
746 5%
748 5%
749 5%
752 10%
753 10%
755 5%
758 5%
760 5%
764 5%
771 5%
773 5%
サービスを開始すると、データがキャプチャされます。
[Unit]
Description=recordpidorder
After=getty.target
[Service]
Type=oneshot
ExecStart=/root/pidandboots
[Install]
WantedBy=multi-user.target
走る:
#!/bin/bash
NF=/root/sequence
[[ ! -e "$NF" ]] && echo 0 > "$NF"
CUR=$(( 1 + $(< "$NF") ))
ps haxo pid,command > "/root/pidorder$CUR"
[[ $CUR -gt 30 ]] && mv /root/pidandboots /root/pidandboots.done
echo "$CUR" > "$NF"
reboot
@reboot
システムが起動して実行されると、クローン以外のジョブが実行され、ユーザーがログインしてさまざまなコマンドを実行するなど、プロセスの生成順序がランダムに割り当てられます。これは、システム、システムで生成されたPIDの数などによって異なります。
はい。デーモンが使用されているRedHatシステムで同じPIDで表示されることは統計的に考えられますsystemd
。ただし、確率は、システムが提供するハードウェアと特定のサービスによって異なります。