unit systemd yang diaktifkan tidak mulai saat boot

35

Saya sudah systemd-unitdi sistem saya yang diaktifkan. Masalahnya adalah, itu tidak me-restart setelah reboot. Itu tergantung pada dua layanan lain yang keduanya dimulai seperti yang diharapkan.

Layanan ini dikenal, diaktifkan dan mati:

[centos@ansible-kube-4 ~]$ sudo systemctl status flanneld
flanneld.service - Flanneld overlay address etcd agent
   Loaded: loaded (/usr/lib/systemd/system/flanneld.service; enabled)
   Active: inactive (dead)

File unit:

[centos@ansible-kube-4 ~]$ cat /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=etcd.service

[Service]
Type=notify
Restart=always
RestartSec=3

EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker

[Install]
WantedBy=multi-user.target

Perbarui 1

Output dari dmesg:

$ dmesg | grep systemd
[    1.312165] systemd[1]: systemd 208 running in system mode. (+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ)
[    1.317238] systemd[1]: Detected virtualization 'kvm'.
[    1.319597] systemd[1]: Running in initial RAM disk.
[    1.323489] systemd[1]: No hostname configured.
[    1.324874] systemd[1]: Set hostname to <localhost>.
[    1.327570] systemd[1]: Initializing machine ID from KVM UUID.
[    1.389047] systemd[1]: Expecting device dev-disk-by\x2duuid-a78bb152\x2de525\x2d4f0e\x2d961a\x2dbf6147ac7d3e.device...
[    1.394577] systemd[1]: Starting -.slice.
[    1.396820] systemd[1]: Created slice -.slice.
[    1.397990] systemd[1]: Starting System Slice.
[    1.400212] systemd[1]: Created slice System Slice.
[    1.401503] systemd[1]: Starting Slices.
[    1.403556] systemd[1]: Reached target Slices.
[    1.404756] systemd[1]: Starting Timers.
[    1.406834] systemd[1]: Reached target Timers.
[    1.408042] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[    1.410065] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    1.413402] systemd[1]: Starting Paths.
[    1.415399] systemd[1]: Reached target Paths.
[    1.416574] systemd[1]: Starting Journal Socket.
[    1.418894] systemd[1]: Listening on Journal Socket.
[    1.420242] systemd[1]: Started dracut ask for additional cmdline parameters.
[    1.422150] systemd[1]: Starting dracut cmdline hook...
[    1.424870] systemd[1]: Started Load Kernel Modules.
[    1.426124] systemd[1]: Starting Journal Service...
[    1.429731] systemd[1]: Started Journal Service.
[    1.692884] systemd-udevd[213]: starting version 208
[    2.621300] systemd-journald[90]: Received SIGTERM
[    2.968711] systemd[1]: Successfully loaded SELinux policy in 274.569ms.
[    3.023076] systemd[1]: Relabelled /dev and /run in 20.031ms.
[    3.365195] systemd-udevd[382]: starting version 208
[    3.482910] systemd-journald[377]: Received request to flush runtime journal from PID 1

Perbarui 2

Output dari chkconfig:

sudo chkconfig

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Output dari systemctl list-dependencies flanneld:

flanneld.service
├─system.slice
└─basic.target
  ├─microcode.service
  ├─rhel-autorelabel-mark.service
  ├─rhel-autorelabel.service
  ├─rhel-configure.service
  ├─rhel-dmesg.service
  ├─rhel-loadmodules.service
  ├─paths.target
  ├─slices.target
  │ ├─-.slice
  │ └─system.slice
  ├─sockets.target
  │ ├─dbus.socket
  │ ├─rpcbind.socket
  │ ├─systemd-initctl.socket
  │ ├─systemd-journald.socket
  │ ├─systemd-shutdownd.socket
  │ ├─systemd-udevd-control.socket
  │ └─systemd-udevd-kernel.socket
  ├─sysinit.target
  │ ├─dev-hugepages.mount
  │ ├─dev-mqueue.mount
  │ ├─kmod-static-nodes.service
  │ ├─proc-sys-fs-binfmt_misc.automount
  │ ├─sys-fs-fuse-connections.mount
  │ ├─sys-kernel-config.mount
  │ ├─sys-kernel-debug.mount
  │ ├─systemd-ask-password-console.path
  │ ├─systemd-binfmt.service
  │ ├─systemd-journal-flush.service
  │ ├─systemd-journald.service
  │ ├─systemd-modules-load.service
  │ ├─systemd-random-seed.service
  │ ├─systemd-sysctl.service
  │ ├─systemd-tmpfiles-setup-dev.service
  │ ├─systemd-tmpfiles-setup.service
  │ ├─systemd-udev-trigger.service
  │ ├─systemd-udevd.service
  │ ├─systemd-update-utmp.service
  │ ├─systemd-vconsole-setup.service
  │ ├─cryptsetup.target
  │ ├─local-fs.target
  │ │ ├─-.mount
  │ │ ├─rhel-import-state.service
  │ │ ├─rhel-readonly.service
  │ │ ├─systemd-fsck-root.service
  │ │ └─systemd-remount-fs.service
  │ └─swap.target
  └─timers.target
    └─systemd-tmpfiles-clean.timer
maklemenz
sumber

Jawaban:

32

File unit telah dimodifikasi:

Sebelum:

[Install]
RequiredBy=docker.service

Setelah:

[Install]
WantedBy=multi-user.target

Setelah modifikasi itu saya tidak mengaktifkan kembali Unit. Ternyata ini diperlukan untuk systemd untuk mengkonfigurasi ulang:

$ sudo systemctl reenable flanneld
rm '/etc/systemd/system/docker.service.requires/flanneld.service'
ln -s '/usr/lib/systemd/system/flanneld.service' '/etc/systemd/system/multi-user.target.wants/flanneld.service'
maklemenz
sumber
2
Saya juga menemukan bahwa ini membantu dan saya tidak tahu mengapa. Mungkin reenablemengoreksi sesuatu yang belum saya lakukan atau gagal dan tidak dapat melihat karena saya tidak cukup menyipit. Ngomong-ngomong, dari dua host identik yang saya konfigurasikan untuk membuat layanan saya muncul setelah reboot, satu berfungsi dan yang lain tidak sampai saya melakukan ini.
Russ Bateman
1
Apakah mungkin dinonaktifkan oleh pemutakhiran? Saya punya satu server yang mencurigakan di mana ia dinonaktifkan setelah upgrade ... sudo systemctl reenable rails-puma.service menyelesaikan masalah ini
Dave Collins
1
mungkin relevan: unix.stackexchange.com/questions/193714/…
ThorSummoner
9

Saya tidak menemukan bukti dalam konfigurasi Anda bahwa layanan ini harus dimulai pada saat boot. systemdmemungkinkan dua cara mengaktifkan layanan sehingga dimulai saat boot:

chkconfig flanneld on

Atau:

systemctl enable flanneld

Sebenarnya, yang pertama adalah cara lama untuk memanggil yang kedua, dan saya tidak yakin apakah chkconfigpaket diinstal secara default, tetapi Anda dapat menginstalnya menggunakan apt-getatau yum.

nKn
sumber
Layanan diaktifkan. Saya dulu sudo systemctl enable flanneldmengaktifkannya.
maklemenz
Setelah menjalankannya, masih belum dimulai saat startup?
nKn
Saya harus memulai layanan secara manual setelah setiap reboot. Itu dimulai pada percobaan pertama dan tanpa pesan kesalahan atau peringatan.
maklemenz
1
Pasti ada sesuatu yang gagal. Secara resmi, cara untuk mengaktifkan layanan saat startup di systemd adalah systemctl enable servicename. Sebagian besar contoh juga termasuk .servicepenghentian dalam perintah, tetapi saya tidak yakin ini harus melakukan perbedaan.
nKn
Sufiks .service secara otomatis ditambahkan ketika dihilangkan oleh pengguna.
mrg2k8