kích hoạt đơn vị systemd không khởi động khi khởi động


35

Tôi đã systemd-unitbật hệ thống của mình. Vấn đề là, nó không khởi động lại sau khi khởi động lại. Nó phụ thuộc vào hai dịch vụ khác mà cả hai đều bắt đầu như mong đợi.

Dịch vụ được biết đến, được kích hoạt và đã chết:

[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)

Tệp đơn vị:

[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

Cập nhật 1

Đầu ra của 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

Cập nhật 2

Đầu ra của 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

Đầu ra của 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

Câu trả lời:


32

Tệp đơn vị đã được sửa đổi:

Trước:

[Install]
RequiredBy=docker.service

Sau:

[Install]
WantedBy=multi-user.target

Sau lần sửa đổi đó, tôi không thể điều chỉnh được Đơn vị. Hóa ra điều này là cần thiết cho systemd để cấu hình lại:

$ 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'

2
Tôi cũng thấy rằng điều này đã giúp và tôi không biết tại sao. Có lẽ reenableđã sửa chữa một cái gì đó tôi đã không làm hoặc đã bị hỏng và không thể nhìn thấy bởi vì tôi đã không nheo mắt đủ mạnh. Dù sao, trong số hai máy chủ giống hệt nhau mà tôi đang định cấu hình để làm cho dịch vụ của tôi xuất hiện sau khi khởi động lại, một máy chủ hoạt động và máy chủ kia thì không cho đến khi tôi làm điều này với nó.
Russ BHRan

1
Có thể nó đã bị vô hiệu hóa bởi một bản nâng cấp? Tôi đã có một máy chủ đáng ngờ, nơi nó bị vô hiệu hóa sau khi nâng cấp ... sudo systemctl reenable rails-puma.service đã giải quyết vấn đề
Dave Collins


9

Tôi không tìm thấy bằng chứng nào trong cấu hình của bạn rằng dịch vụ này nên được bắt đầu khi khởi động. systemdcho phép hai cách kích hoạt dịch vụ để nó được khởi động khi khởi động:

chkconfig flanneld on

Hoặc là:

systemctl enable flanneld

Trên thực tế, cách thứ nhất là một cách gọi di sản thứ hai và tôi không chắc liệu chkconfiggói đó có được cài đặt theo mặc định hay không, nhưng bạn có thể cài đặt nó bằng cách sử dụng apt-gethoặc yum.


Dịch vụ được kích hoạt. Tôi đã sử dụng sudo systemctl enable flanneldđể kích hoạt nó.
maklemenz

Sau khi chạy nó vẫn không bắt đầu lúc khởi động?
nKn

Tôi phải bắt đầu dịch vụ bằng tay sau mỗi lần khởi động lại. Nó bắt đầu vào lần thử đầu tiên và không có bất kỳ thông báo lỗi hoặc cảnh báo nào.
maklemenz

1
Phải có một cái gì đó thất bại. Chính thức, cách để kích hoạt một dịch vụ khi khởi động trong systemd là systemctl enable servicename. Hầu hết các ví dụ cũng bao gồm việc .servicechấm dứt trong lệnh, nhưng tôi không chắc điều này sẽ làm bất kỳ sự khác biệt nào.
nKn

Hậu tố .service được tự động thêm vào khi nó bị người dùng bỏ qua.
mrg2k8
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.