centos7 中 systemd systemctl管理服务的命令

简介:

背景: centos7 和 6的重大改变

对于系统管理员而言,系统的服务管理是一件很日常和很重要的工作,而7在6的基础上有了很大的改变,就连命令都完全不一样了。所以要拥抱变化,学习7是如何进行服务的管理和控制的。



system和systemctl的初探

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。

在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。


【第一步】

查看systemd的版本

# systemctl --version

systemd 219

+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN


查看进程是否存在

ps -ef | grep [s]ystemd


注意:systemd是作为父进程(pid=1)运行的


分析systemd的启动进程

# systemd-analyze

Startup finished in 639ms (kernel) + 931ms (initrd) + 12.432s (userspace) = 14.003s


分析各个进程启动发费的时间

#systemd-analyze blame


分析启动时候的关键链

systemd-analyze critical-chain


重要:Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元。



列出所有服务可用单元

systemctl list-unit-files


(200多个)


列出所有运行中的单元

systemctl list-units


列出失败的单元?

systemctl --failed


列出某个单元是否启动

# systemctl is-enabled crond.service

enabled

或者

# systemctl is-enabled crond

enabled


检查某个单元或服务是否运行



# systemctl is-active crond 

active

或者

# systemctl status crond   

这个信息更详细


############################# 控制服务  ############################

列出所有服务(包括启用的和禁用的)

systemctl list-unit-files  --type=service

(120+)


以httpd为例

yum install httpd

会生成以下文件

/usr/lib/systemd/system/httpd.service 



Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态

[root@Centos7-node2 ~]# systemctl status httpd

● httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

   Active: inactive (dead)

     Docs: man:httpd(8)

           man:apachectl(8)

[root@Centos7-node2 ~]# systemctl start httpd 

[root@Centos7-node2 ~]# systemctl status httpd

● httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

   Active: active (running) since Sun 2016-10-23 00:48:43 CST; 3s ago

     Docs: man:httpd(8)

           man:apachectl(8)

 Main PID: 26811 (httpd)

   Status: "Processing requests..."

   CGroup: /system.slice/httpd.service

           ├─26811 /usr/sbin/httpd -DFOREGROUND

           ├─26812 /usr/sbin/httpd -DFOREGROUND

           ├─26813 /usr/sbin/httpd -DFOREGROUND

           ├─26814 /usr/sbin/httpd -DFOREGROUND

           ├─26815 /usr/sbin/httpd -DFOREGROUND

           └─26816 /usr/sbin/httpd -DFOREGROUND


Oct 23 00:48:17 Centos7-node2 systemd[1]: Starting The Apache HTTP Server...

Oct 23 00:48:33 Centos7-node2 httpd[26811]: AH00558: httpd: Could not reliably determine the server's fully qua...ssage

Oct 23 00:48:43 Centos7-node2 systemd[1]: Started The Apache HTTP Server.

Hint: Some lines were ellipsized, use -l to show in full.

[root@Centos7-node2 ~]# systemctl reload httpd

[root@Centos7-node2 ~]# systemctl stop httpd  




注意:

Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)


在loader中第一个disabled表示系统启动是否自启动,为非自动。 第二个不知道干嘛


Active: active (running) since Sun 2016-10-23 00:48:43 CST; 3s ago


Active 表示服务是不是在运行



如何激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)

[root@Centos7-node2 ~]# systemctl enable httpd

Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.


禁用

systemctl disabled httpd

[root@Centos7-node2 ~]# systemctl disable httpd 

Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.



使用systemctl命令杀死服务

[root@Centos7-node2 ~]# systemctl kill httpd

[root@Centos7-node2 ~]# systemctl status httpd

● httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

   Active: failed (Result: exit-code) since Sun 2016-10-23 00:56:59 CST; 1s ago

     Docs: man:httpd(8)

           man:apachectl(8)

  Process: 26901 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)

 Main PID: 26869 (code=exited, status=0/SUCCESS)

   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"


Oct 23 00:51:38 Centos7-node2 systemd[1]: Starting The Apache HTTP Server...

Oct 23 00:51:53 Centos7-node2 httpd[26869]: AH00557: httpd: apr_sockaddr_info_get() failed for Centos7-node2

Oct 23 00:51:53 Centos7-node2 httpd[26869]: AH00558: httpd: Could not reliably determine the server's fully qua...ssage

Oct 23 00:52:03 Centos7-node2 systemd[1]: Started The Apache HTTP Server.

Oct 23 00:56:59 Centos7-node2 kill[26901]: kill: cannot find process ""

Oct 23 00:56:59 Centos7-node2 systemd[1]: httpd.service: control process exited, code=exited status=1

Oct 23 00:56:59 Centos7-node2 systemd[1]: Unit httpd.service entered failed state.

Oct 23 00:56:59 Centos7-node2 systemd[1]: httpd.service failed.

Hint: Some lines were ellipsized, use -l to show in full.



注意:Active: failed (Result: exit-code) since Sun 2016-10-23 00:56:59 CST; 1s ago

这个的failed表示的是kill掉的?




##########################  使用Systemctl控制并管理挂载点 #################3

[root@Centos7-node2 ~]# systemctl list-unit-files --type=mount

UNIT FILE                     STATE   

dev-hugepages.mount           static  

dev-mqueue.mount              static  

proc-sys-fs-binfmt_misc.mount static  

sys-fs-fuse-connections.mount static  

sys-kernel-config.mount       static  

sys-kernel-debug.mount        static  

tmp.mount                     disabled



挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

systemctl start tmp.mount

systemctl status tmp.mount

systemctl reload tmp.mount


在启动时激活、启用或禁用挂载点(系统启动时自动挂载)


# systemctl is-active tmp.mount

# systemctl enable tmp.mount

# systemctl disable tmp.mount


在Linux中屏蔽(让它不能启用)或可见挂载点


# systemctl mask tmp.mount

ln -s '/dev/null''/etc/systemd/system/tmp.mount'

# systemctl unmask tmp.mount

rm '/etc/systemd/system/tmp.mount'

 



####################  控制系统运行等级  ##################


 


启动系统救援模式


# systemctl rescue

Broadcast message from root@tecmint on pts/0(Wed2015-04-2911:31:18 IST):

The system is going down to rescue mode NOW!

 


进入紧急模式


# systemctl emergency   

Welcome to emergency mode!After logging in, type "journalctl -xb" to view

system logs,"systemctl reboot" to reboot,"systemctl default" to try again

to boot intodefault mode.

 

列出当前使用的运行等级


注意:init 1也是可以使用的

# systemctl get-default

multi-user.target

 

注意:who -r 也是可以查看的


启动运行等级5,即图形模式


# systemctl isolate runlevel5.target

# systemctl isolate graphical.target

 


启动运行等级3,即多用户模式(命令行)


# systemctl isolate runlevel3.target

# systemctl isolate multiuser.target

 


设置多用户模式或图形模式为默认运行等级


# systemctl set-default runlevel3.target

# systemctl set-default runlevel5.target

 


重启、停止、挂起、休眠系统或使系统进入混合睡眠


# systemctl reboot             

# systemctl halt

# systemctl suspend

# systemctl hibernate

# systemctl hybrid-sleep

对于不知运行等级为何物的人,说明如下。


Runlevel 0 : 关闭系统

Runlevel 1 : 救援?维护模式

Runlevel 3 : 多用户,无图形系统

Runlevel 4 : 多用户,无图形系统

Runlevel 5 : 多用户,图形化系统

Runlevel 6 : 关闭并重启机器



注意:在centos7 中仍然可以使用init 0 关机 init 6 启动。   

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1864579如需转载请自行联系原作者


cuizhiliang

相关文章
|
26天前
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
169 1
|
20天前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
49 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
17 2
|
4天前
|
安全 Linux 网络安全
centos7中firewall防火墙的常用命令总结
以上命令集覆盖了 `firewalld`的基本操作,是维护CentOS 7系统安全不可或缺的工具。对于更高级的配置需求或遇到特定问题
10 3
|
5天前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
11 1
|
26天前
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
45 1
|
2月前
|
网络协议 Linux Shell
CentOS7系统命令学习笔记(一)
CentOS7系统命令学习笔记(一)
75 12
|
2月前
|
Linux
CentOS7系统命令学习笔记(二)
CentOS7系统命令学习笔记(二)
54 10
|
2月前
|
Linux Shell API
CentOS7系统命令学习笔记(三)
CentOS7系统命令学习笔记(三)
53 8
|
22天前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
31 0