你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

最新的Linux系统都统一使用systemctl

[复制链接]
gaosmile 发布时间:2020-11-4 18:54
服务:常驻系统内存中的进程且可以提供一些系统和网络功能;现在最新的Linux系统都统一使用systemctl进行服务的管理. l$ Q0 u% _% [9 c+ a& u
1.运行级别的分类 runlevel> 运行级别0:系统停机状态
3 {! ]! x5 g3 Z$ v( v; v3 L+ e> 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 ! r) Y2 Y6 w$ R+ S$ f" w
> 运行级别2:多用户状态(没有NFS) . h1 _4 L: d) M* y  \% a( {0 [
> 运行级别3:完全的多用户状态(有NFS)# U/ V# U2 p- V$ Z2 F  F3 @& w
> 运行级别4:系统未使用,保留
9 k8 a8 U& x2 H" v> 运行级别5:X11控制台
2 {4 c; T8 R2 ^+ U# J> 运行级别6:系统正常关闭并重启

' E6 u: I! }2 `
! `9 C- F( h1 ~, S. h
2.管理服务 systemctl (root权限)- C1 [! F# [# P0 q* Q) G$ F, D0 @
> systemctl [opt] xxx.service
' q) k3 H7 `+ Q0 i) K% z% c+ z> status  查看当前服务状态5 f7 |6 j9 y! @: K8 `, z
> start  启动服务3 S! Q. C) Z8 m1 c, O6 ?1 p/ C+ w
> stop  关闭服务
7 N+ R( [0 z8 a! Z" g> restart 重启服务
& Q0 t4 O2 @9 P2 T% F+ l4 w> enable 设置开机启动
' t2 Q. M. H7 U& Y! h+ K> disable 设置开机不启动
9 R. {' ?7 F( A( R" g2 f3 p: p> reload  后面不接具体服务名,重新加载配置文件, x$ C( q$ [6 H$ i/ d* L( Q% ]
> mask 注销服务% O9 v& Y  e9 b. y1 y3 _9 {
> unmask 取消注销

) p, g+ }0 P" O- t$ h9 C3 D
7 b/ g2 M9 Y* l9 u" q8 b, n

1 J# H' N+ v* |+ W0 n: W3.一些常用命令 systemctl
  • 查看当前已经启动的服务 systemctl list-units
  • 查看所有服务 systemctl list-unit-files
  • 查看服务有哪些依赖 systemctl list-dependencies xx.service
  • 查看服务有哪些依赖(反向) systemctl list-dependencies --reverse xx.service

  • - C' B3 Y+ l7 M# ]$ u& d( Z
    5 L! Y* S8 e% j4 @0 _
4.system 服务相关的一些目录( Centos 环境,Debian 类的环境可能会有稍许不同)/usr/lib/systemd/system/ 系统安装的软件默认启动脚本目录
/ T  Z' g* j: N( Z( i# D5 Y" D# `/etc/systemd/system/ 用户根据自己需要建立的启动脚本目录2 g& i- n4 h; J8 j, |
/etc/sysconfig/ 服务初始化选项目录
3 |; W# Z$ o2 D% B1 a/var/lib/ 服务运行时产生的数据存储目录
- y" Z: J" c9 Q0 M3 g, t/etc/xxx/ 各服务配置目录
- v( S/ ~; i% a" [4 x2 q
0 x" r6 M6 b$ p) c6 H) |# e  Q6 L

4 m9 B% A- |3 j$ r! t; x5.结合一个例子来具体讲解,一台机开启两个ssh服务

我们最常使用的ssh服务,系统默认ssh服务22端口,我现在想再开一个ssh服务,端口8888

1.系统服务启动脚本 /usr/lib/systemd/system/sshd.service,将其复制到 /etc/systemd/system/ 下,并改名为 sshd2.service,文件内容如下

[Unit]
- x  s  R6 ?) A, j' D0 {5 d1 A Description=OpenSSH server daemon
) \: F4 w. F. I Documentation=man:sshd(8) man:sshd_config(5)  O0 t4 k; B2 T) R" z, U6 J
After=network.target sshd-keygen.service
- w) A2 P; b; Q Wants=sshd-keygen.service
8 }0 O# y9 o# r8 e; L
& K) `& J+ m4 x$ d2 x0 |3 R7 j  [* E1 Y [Service]
/ P' p( A& z4 I. g. C3 Y Type=notify+ w- B8 E% m1 j
EnvironmentFile=/etc/sysconfig/sshd
& j7 ?8 t" Z* S0 K. H# r: U: A; ` ExecStart=/usr/sbin/sshd -D $OPTIONS
3 V) d* M" P7 W4 b3 ^  ^ ExecReload=/bin/kill -HUP $MAINPID  r5 h4 w. ]9 B
KillMode=process2 P( I* c' R  Q- X7 `9 @7 J7 F$ L
Restart=on-failure
5 K2 u5 W' O7 t, s RestartSec=42s/ ~' |% k1 a  M$ M, }

* S3 k( f3 D& f, T: j [Install]
# @. ~% S. _, ?% H8 L: X WantedBy=multi-user.target

因为要重启一个新的服务,所以要修改一下ExecStart这一行,读取新的配置文件 sshd2_config,改为

  ExecStart=/usr/sbin/sshd -D $OPTIONS -f /etc/ssh/sshd2_config

2.到 /etc/ssh/ 下,将 sshd_config 复制到 sshd2_config,并修改端口那一行

Port 8888

3.运行命令 systemctl reload 重新加载一下配置

4.运行命令 systemctl status sshd2.service 查看状态

5 运行命令 systemctl start sshd2.service 开启服务

6.运行命令 systemctl enable sshd2.service 设置开机启动

7.在另一台机器上登录 ssh fancy@ip -p8888 就可以登录了

  • 注意1,防火墙要打开8888端口

  • 注意2,官方建议用户自己新建的服务脚本最好存放在 /etc/systemd/system/ 目录下,实际情况下存放在系统服务目录 /usr/lib/systemd/system/ 下也是没有问题的,看个人选择了


    8 \0 N; Y; M" X  k- N) x% l
6.我们再来举个例子,做一个自己的服务

1.在 /root/bin/ 下创建一个shell脚本 fancy_test.sh,并修改其权限,chmod u+x fancy_test.sh,内容如下

#!/bin/bash- v% x" z  h6 M4 V6 T
logdate=$(date +%s)
, c, ]+ f' ?5 ]3 x$ f, Glogdir="/root/log/"
% \( _% u2 E' z1 ~2 _+ llogname=fancy.${logdate}.log4 E- Q( J" M" Y9 d
#echo $logname
: k& a3 L+ s9 E* Mtouch ${logdir}${logname}

意思是,运行该服务时,在 /root/log/ 目录下创建一个日志文件

2.在 /etc/systemd/system/ 下创建启动脚本 fancy_test.service,输入一下内容

[Unit]
2 _2 ~- O& y  vDescription=fancy_test server daemon
3 k8 V3 j) s+ H/ m: k* @2 X( R7 ^9 D/ m
[Service]
! w) C" G$ b2 l8 HType=simple
+ m( C1 s+ |- Z! Z! p# j. MExecStart=/root/bin/fancy_test.sh
. `4 ~- f9 L, Y' [; z/ t4 H$ O
& ?/ R4 u2 S) |[Install]
. V1 z  S* c2 X8 g- l( n( TWantedBy=multi-user.target

3.运行命令 systemctl reload

4.运行命令 systemctl start fancy_test.service

5.此时你会看到在 /root/log/ 目录下创建了一个日志文件

  • 注意,我们这个是最简单的服务,执行几个命令而已,所以没有配置文件,也不会常驻内存,运行一次就结束3 {  z  ]4 z: H8 t' F- \# P+ G1 F

% L% y- k7 k! j: v0 Z' C: l0 l
/ [, e0 D, w3 `! m6 s& n0 x
赞 收藏 评论0 发布时间:2020-11-4 18:54

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版