运行时,systemd-analyze critical-chain
我注意到 Samba 守护进程位于用户登录路径上。虽然我希望 Samba 在启动时自动启动,但我不在乎它是在我登录之前还是之后发生。
systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
graphical.target @13.587s
└─multi-user.target @13.587s
└─smbd.service @11.231s +2.355s
└─network.target @11.230s
└─[email protected] @10.302s +927ms
└─basic.target @9.496s
└─sockets.target @9.496s
└─pcscd.socket @9.496s
└─sysinit.target @9.461s
└─systemd-timesyncd.service @9.397s +63ms
└─systemd-tmpfiles-setup.service @9.201s +128ms
└─local-fs.target @9.199s
└─windows.mount @8.396s +802ms
└─dev-disk-by-uuid-E200B0E200B0BF3B.device @8.362s
查看单元文件,它声明了WantedBy=multi-user.target
。我想我可以用一些替代目标来切换这个目标,以使 Samba 脱离关键路径。但是,我不知道该使用哪个目标。
systemctl cat smbd.service
# /usr/lib/systemd/system/smbd.service
[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service
[Service]
Type=forking
PIDFile=/var/run/smbd.pid
ExecStart=/usr/bin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
答案1
在研究和撰写问题时,我systemctl --all
查看了可用的目标。我注意到getty.target
有一个“登录提示”的描述。查看的关键路径getty.target
表明它实际上在之前就开始了,smbd
因为它们不相互依赖。所以我只是误解了它的multi-user.target
意思。
我的 Windows 分区现在已经被砍掉了,很久没用过了。
getty.target @10.322s
└─[email protected] @10.322s
└─systemd-user-sessions.service @9.526s +785ms
└─basic.target @9.496s
└─sockets.target @9.496s
└─pcscd.socket @9.496s
└─sysinit.target @9.461s
└─systemd-timesyncd.service @9.397s +63ms
└─systemd-tmpfiles-setup.service @9.201s +128ms
└─local-fs.target @9.199s
└─windows.mount @8.396s +802ms
└─dev-disk-by-uuid-E200B0E200B0BF3B.device @8.362s