Linux服务和systemctl详解
定义
A Linux service is an application (or set of applications) that runs in the background waiting to be used, or carrying out essential tasks.
也就是说,Linux服务是在后台运行的应用程序(或一组应用程序),正在等待执行或正在执行基本任务。
在Linux或者Unix系统中,服务也被称为Daemons(守护进程)。它们运行在后台,为一些程序提供服务。比如我们熟知的sshd服务(其中d指的就是daemon),它就是ssh命令的相应守护进程。
两个命令
service命令
service 命令通常用于控制服务的一些状态,其使用方法如下
Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]
其中它会去/etc/init.d/目录中寻找service_name,一些基本例子如下(为方便演示,以sshd为例,并且以root身份运行,因此省略了可能的sudo):
- 查看当前所有服务,
[+]表示正在运行的,[-]表示当前没有运行,[?]表示因某种原因不能确定其运行状态:
service --status-all
- 查看单个服务的状态:
service sshd status
- 启动、停止、重启、重载服务
service sshd start
service sshd stop
service sshd restart
service sshd reload
systemctl命令
systemctl是一个新的用来控制systemd和service的工具,用来取代旧的SysV init 系统管理。
主要语法:
systemctl [OPTION] [SERVICE]
下面给出些基本操作,注意事项同上
- 查看单个服务的状态:
systemctl status sshd
或者systemctl is-active sshd来查看服务是否运行
- 启动、停止、重启、重载服务
systemctl start sshd
systemctl stop sshd
systemctl restart sshd
systemctl reload sshd
- 查看所有服务,这里的服务非常详细
systemctl list-unit-files
或者
systemctl list-units --type service
其中Enabled表明服务正在运行;Disabled表明服务当前没有运行;Masked表示服务不会被运行,除非我们手动移除这个标志;Static表示服务只有在别的服务或单元需要它时才被使用。
- 开机自启
systemctl enable sshd
或者
systemctl disable sshd
来取消开机自启
service和systemctl的比较
总的来说,后者(systemctl)的功能比前者要强大得多,前者的功能后者似乎都包括,而且后者还含有不少前者所没有的功能。
另外我还看到有些linux发行版本会将service命令重定向为systemctl命令,如下图所示:

创建服务
首先创建服务的执行的代码,也就是将某个程序的运行代码转为服务。
这里以我的一个程序为例,/root/flynet -M socks-tcp -L 8888,运行之后会监听8888端口。具体这个程序的用途在这里并不重要,我们只用知道运行之后它会监听相应端口即可。
然后在/etc/systemd/system目录下新建一个文件,我这里以flynet.service为例,内容为:
[Unit]
Description=Flynet service
After=network.target
[Service]
ExecStart=/root/flynet -M socks-tcp -L 8888
Restart=always
[Install]
WantedBy=multi-user.target
其中Description为该服务的描述;After为服务的启动顺序,表示在某种条件达到后才执行,这里表示的在网络就绪之后运行;ExecStart即为你要执行的目标代码;Restart表示当该服务因某种原因退出之后,自动启动的配置;WantedBy表示安装的对象,这里表示多用户。
服务创建好之后,然后可以通过下面的命令来启动服务
systemctl start flynet
还可以通过下面的命令来实现开机自启
systemctl enable flynet
其他
开机自启
现在开机自启的实现方式中,比较常用的有两种,其一就是上文中的创建服务,另一种就是cron
cron主要用于定时任务,不过也可以实现开机自启。
下面也简单介绍下cron的,首先输入
crontab -e
然后选择你喜欢的输入法,之后再输入
@reboot /home/user/test.sh
这里表示的是开机会自动运行后面的脚本文件,当然后面内容的内容是自定义的,也可以是单个命令,而不局限于脚本文件。之后再保存即可。
这样就使用cron实现了开机自启,更多cron可以参考我这篇博客
Linux服务和systemctl详解的更多相关文章
- linux系统设置服务开机启动3种方法,Linux开机启动程序详解
linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明 ...
- Linux中的sudoer详解
目录 Linux中的sudo详解 一.引言 二.格式 三./etc/sudoers文件 四.sudoers文件讲解 五.其他 Linux中的sudo详解 一.引言 Liunx用户只有两类: 管理员用户 ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- linux 开机启动过程详解
Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...
- Linux开机启动程序详解
Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...
- Linux开机启动程序详解[转]
Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...
- Linux下chkconfig命令详解(转)
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- Linux知识积累(4) Linux下chkconfig命令详解
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- 【转帖】Linux定时任务Crontab命令详解
Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...
随机推荐
- 两种unity双击事件
有时候需要用到双击事件,而unity未提供双击控件,在此提供两种双击事件方法,进攻参考: 1)此方法为通过unityevent来实现 首先新建image(或其他不带点击事件的控件),添加如下脚本,然后 ...
- fenby C语言 P29
野指针 malloc()分配内存: free()释放内存: p=(char*)malloc(100): #include <stdio.h>#include <stdlib.h> ...
- SVN 下载与安装(超简单)!!!
一 SVN 是什么? 在公司做过团队开发都知道,一个项目的代码要保持最新的版本. 举个例子! 例如:一个公司的项目有5人开发(A,B,C,D,E五个人),有一个地方专门存放项目的最新的代码,这个地 ...
- Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同步
1:下载 ElasticSearch 镜像 docker pull docker.io/elasticsearch:5.6.8 2:创建 ElasticSearch 容器: 注意:5.0默认分配jvm ...
- 部署spring boot + Vue遇到的坑(权限、刷新404、跨域、内存)
部署spring boot + Vue遇到的坑(权限.刷新404.跨域.内存) 项目背景是采用前后端分离,前端使用vue,后端使用springboot. 工具 工欲善其事必先利其器,我们先找一个操作L ...
- C语言1博客作业04
问题 答案 这个作业属于那个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9770 我在这 ...
- 《Effective Java》 读书笔记(二) 在构造参数过多的时候优先考虑使用构造器
刚开始看见这个标题的时候,我想到了python可以选择初始化参数的语法,C++.C#能有默认参数. 为什么Java什么都没有~~ 好吧,我们是使用构造器来实现它. 1.当一个类的构造函数需要很多构造函 ...
- __new__与__init__的区别和应用场景
创建实例的时候, 先运行的_new_方法, _new_创建对象 Student object(实例)返回给 _init_ 里面的第一个参数self class Student(object): def ...
- [考试反思]1107csp-s模拟测试104: 速度
20分钟能做什么? 不粘排行榜,没意义,第一机房集体重启,我侥幸找回了两个文件才有分. 实际得分应该是70+100+60,第二机房rank1...放在第一机房就不知道了 T1:中间值 比较喜欢题解的第 ...
- 使用Typescript重构axios(二)——项目起手,跑通流程
0.系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三)- ...