现代 Linux 都采用 systemd 来作为守护进程,例如在 Ubuntu 18.04 上它们都指向同一个 systemd,
$ ll /sbin/init /sbin/init -> /lib/systemd/systemd*$ ll /bin/systemd /bin/systemd -> /lib/systemd/systemd*
而 init 和 systemd 的区别如下,
init 和 systemd 都是 Linux 的 init 守护进程,但最好使用后者,因为它在现代的 Linux 发行版中很常用。init 使用 service,而 systemd 用 systemctl 管理 Linux 服务。
init 守护进程是 Linux 内核执行的第一个进程,它的进程 ID (PID) 始终为 1。它的目的是初始化、管理和跟踪系统服务和守护进程。换句话说,init 守护进程是系统上所有进程的父进程。
要创建一个服务,需要编写 shell 脚本,并存储在 /etc/init.d/ 目录下,通过 service 命令启动、停止、重新启动服务。例如如下的 /etc/init.d/myservice 脚本,
#!/bin/bash # chkconfig: 2345 20 80 # description: Description comes here.... # Source function library. . /etc/init.d/functions start() { # TODO: code to start app comes here } stop() { # TODO: code to stop app comes here } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) # TODO: code to check status of app comes here ;; *) echo "Usage: $0 {start|stop|restart|status}" esac exit 0
而 systemd(system daemon)是现代的 Linux 系统所使用的守护进程(pid 也为 1),其功能更加强大。要编写 systemd 服务,需要在 /etc/systemd/system/ 目录下编写一个 .service 文件。
有了 .service 文件之后,可以通过 systemctl 命令来启动、停止、重新启动服务。
以下为一个 myservice.service 文件的样例,
[Unit] Description=Some Description Requires=syslog.target After=syslog.target [Service] ExecStart=/usr/sbin/<command-to-start> ExecStop=/usr/sbin/<command-to-stop> [Install] WantedBy=multi-user.target
Over.
标签:systemd,stop,start,init,Linux,进程 From: https://www.cnblogs.com/gaowengang/p/17208550.html