Linuxの高度な_systemdコメント(CentOSの7)

systemdに

  • systemdに:システムを担当するシステム起動時およびサーバデーモンマネージャは、起動またはアクティベーションシステムリソース、サーバ・プロセスおよび他のプロセスを実行します

  • systemdに新機能

    • 並行して開始サービスを実装する場合、システムのブート
    • オンデマンドでデーモンを起動します
    • 自動化されたサービスの依存関係の管理
    • 式D-バスサービスバストランスのソケットを使用している間
    • システム状態のスナップショット
  • コアコンセプト:単位
    ;、主にシステム・サービスを含むファイルモニターソケット、システムは、スナップショットやその他の関連情報INITを保存ユニットは、構成ファイルを介してオブジェクト、識別および構成の異なるタイプを表すシステムD

  • プロフィール
    /usr/lib/systemd/system:メイン前の/etc/init.d/のに似て、各サービスの設定の起動スクリプト、
    /run/systemd/system:生成されたサービススクリプトの実行システム、上記のディレクトリよりも実行優先順位
    /etc/systemd/system:管理者が作成したスクリプトを実行する、と類似上記のディレクトリより/etc/rcN.d/Sxx機能、実行優先順位

ユニット型

  • systemctl –t help 表示ユニットタイプ
    1. サービスユニット:ファイル拡張子.serviceシステム・サービスを定義するために使用されます
    2. ターゲット単位:ファイル拡張子.target運用レベルを達成シミュレートするために使用
    3. 装置ユニット:ファイル拡張子.device、識別されたデバイスを定義するために使用されるカーネル
    4. マウントユニット:ファイル拡張子.mount、ファイルシステムのマウントポイントを定義します
    5. ソケット単位:ファイル拡張子.socketを使用するプロセス間通信ソケットファイルを識別するために使用するだけでなく、システムが起動し、遅れて開始サービスの開始デマンド
    6. スナップショット単位:ファイル拡張子.snapshot、スナップショット管理システム
    7. スワップ部:ファイル拡張子.swapスワップ・デバイスを識別するために使用
    8. 自動マウントユニット:ファイル拡張子.automount、ファイルシステムが自動的にマウントポイント
    9. パス単位:ファイル拡張子は.path、ファイルまたはディレクトリを使用してファイルシステムを定義するために、ファイルシステムがしばしば使用されるときのような変化、遅延アクティベーションサービス、:スプールディレクトリ

管理サービス

管理サービス:CentOSの7:サービスユニット

  • コマンド:systemctl COMMAND name.service
コントロール centos6 centos7
スタート service name start systemctl start name.service
ストップ service name stop systemctl stop name.service
再起動 service name restart systemctl restart name.service
状態 service name status systemctl status name.service
再起動条件 service name condrestart systemctl try-restart name.service

条件を再起動:再起動前に開始、そうでない場合は動作しません

  • その他のコマンド
コントロール コマンド(CentOSに7)
サービスを再ロードまたは再起動します:最初にロードされ、その後、起動 systemctl reload-or-restart name.service
式のサービス条件を再ロードまたは再起動します systemctl reload-or-try-restart name.service
自動と手動の開始を無効にします systemctl mask name.service
ブロックを解除 systemctl unmask name.service
サービスの状態を表示し、現在アクティブか systemctl is-active name.service
すべてのサービスが起動されている参照してください。 systemctl list-units --type|-t service
すべてのサービスを見ます systemctl list-units --type service --all|-a
ビューの依存サービス systemctl list-dependencies name.service
プロセスを強制終了 systemctl kill unitname
  • chkconfigコマンドの対応
コマンド CentOSの6

(chkconfigを)

CentOSの7

(systemctl)

甲斐からサービス起動を設定します chkconfig name on systemctl enable name.service
サービス開始禁止スタートを設定します chkconfig name off systemctl disable name.service
甲斐状態から全てのサービスの起動を見ます chkconfig --list systemctl list-unit-files --type service
リストサービスの各実行レベルで有効/無効にします chkconfig sshd –list ls /etc/systemd/system/*.wants/sshd.service
甲斐からサービスブートするかどうかを確認してください systemctl is-enabled name.service

サービスステータス

  • systemctl list-unit-files --type service --all すべてのサービスの状態を表示します
    • ロードされたユニットの設定ファイルが処理されています
    • アクティブ(ランニング)は、1つ以上の連続プロセスを実行します
    • アクティブワンタイム設定が正常に完了した(終了)
    • アクティブなイベントを待って、実行されている(待機中)
    • アクティブでは実行されません。
    • 有効ブーツ
    • 無効なブートが起動しません
    • 静的ブートが開始されませんが、別のサービスの活性化によって有効にすることができます

systemctlコマンドの例

コンフィギュレーション コマンド
全てのセルの状態を表示します systemctlの或systemctlリスト-単位
サービスユニットのステータスのみを表示します systemctl --type =サービス
SSHDサービス表示部 systemctl -l状態sshd.service
sshdサービスが現在アクティブであることを確認 systemctlは、アクティブなSSHD
sshdサービスを開始し、停止して再起動 sshd.serviceを開始systemctl

systemctlストップsshd.service

systemctl再起動sshd.service

設定の再ロード systemctlリロードsshd.service
すべてのアクティブなサービスユニットのリスト systemctlリスト単位--type =サービス
すべてのサービス・ユニットをリスト systemctlリスト・ユニット--type =サービス--all
ビューのサービスの単位が有効と無効の状態 systemctlリストユニット・ファイル--type =サービス
上場失敗したサービス systemctl --failed --type =サービス
上場依存性細胞 systemctlリストの依存関係のSSHD
そのsshdサービスの起動を確認してください systemctlは、有効になっているSSHD
それが自動的に起動しないように、ネットワークを無効にします ネットワークを無効systemctl
ネットワークを有効にします ネットワークを有効にsystemctl
それは手動または自動で起動できないように、ネットワークを無効にします systemctlマスクネットワーク
ネットワークを有効にします ネットワークマスクを解除systemctl

サービス単位のファイル形式

/etc/systemd/system:システム管理者とユーザー
/usr/lib/systemd/system:リリースパッケージを使用します

  • コンテンツの背後にある行の先頭に「#」で、それはコメントとみなされます

  • ブール値関連
    のオープン:1を、そう、真の、上の
    閉じた:0を、なし、オフ、偽

  • デフォルトの時間単位は秒で、そうなど、ミリ秒(ms)分(m)を使用して明示的に宣言するために

  • service unit file文件通常由三部分组成:
    [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
    [Service]:与特定类型相关的专用选项;此处为Service类型
    [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

  • Unit段的常用选项:

    • Description:描述信息
    • After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
    • Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
    • Wants:依赖到的其它units,弱依赖
    • Conflicts:定义units间的冲突关系
  • Service段的常用选项:

    1. Type:定义影响ExecStart及相关参数的功能的unit进程启动类型
    2. simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
    3. forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
    4. oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
    5. dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
    6. notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息
    7. idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
  • EnvironmentFile:环境配置文件

    • ExecStart:指明启动unit要运行命令或脚本的绝对路径
    • ExecStartPre: ExecStart前运行
    • ExecStartPost: ExecStart后运行
    • ExecStop:指明停止unit要运行的命令或脚本
    • Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
  • Install段的常用选项:

    • Alias:别名,可使用systemctl command Alias.service
    • RequiredBy:被哪些units所依赖,强依赖
    • WantedBy:被哪些units所依赖,弱依赖
    • Also:安装本服务的时候还要安装别的相关服务
      •注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启systemctl daemon-reload
  • 服务Unit文件示例:

> vim /etc/systemd/system/bak.service
[Unit]
Description=backup /etc
Requires=atd.service
[Service]
Type=simple
ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start bak
  • target units:
    unit配置文件:.target
    查看所有target文件:
    ls /usr/lib/systemd/system/*.targetsystemctl list-unit-files --type target --all

  • 运行级别:

0 ==> runlevel0.target -> poweroff.target
1 ==> runlevel1.target -> rescue.target
2 ==> runlevel2.target -> multi-user.target
3 ==> runlevel3.target -> multi-user.target
4 ==> runlevel4.target -> multi-user.target
5 ==> runlevel5.target -> graphical.target
6 ==> runlevel6.target -> reboot.target
  • 查看依赖性:
    systemctl list-dependencies graphical.target

  • 级别切换:init N ==> systemctl isolate name.target
    systemctl isolate multi-user.target
    注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换(修改文件需执行systemctl daemon-reload才能生效)

  • 查看target:
    runlevel ; who -r
    systemctl list-units --type target

  • 获取默认运行级别:systemctl get-default

  • 修改默认级别:systemctl set-default name.target

示例:

systemctl set-default multi-user.target
ls –l /etc/systemd/system/default.target
  • 其它命令
    切换至紧急救援模式:
    systemctl rescue
    切换至emergency模式:
    systemctl emergency
    其它常用命令:
    传统命令init,poweroff,halt,reboot都成为
    systemctl的软链接
    关机:systemctl halt、systemctl poweroff
    重启:systemctl reboot
    挂起:systemctl suspend
    休眠:systemctl hibernate
    休眠并挂起:systemctl hybrid-sleep

  • 生成GRUB配置文件
    (1)修改模板配置文件:/etc/default/grub
    (2)然后执行:grub2-mkconfig -o /boot/grub2/grub.cfg

CentOS 7 引导顺序

详细的引导可以参考我的另一篇博客:由浅入深_CentOS系统启动流程

  1. UEFi或BIOS初始化,运行POST开机自检
  2. 选择启动设备
  3. 引导装载程序, centos7是grub2
  4. 加载装载程序的配置文件:
    /etc/grub.d/
    /etc/default/grub
    /boot/grub2/grub.cfg
  5. 加载initramfs驱动模块
  6. 加载内核选项
  7. 内核初始化,centos7使用systemd代替init
  8. 执行initrd.target所有单元,包括挂载/etc/fstab
  9. 从initramfs根文件系统切换到磁盘根目录
  10. systemd执行默认target配置,配置文件/etc/systemd/system/default.target
  • systemd执行顺序
    (1)systemd执行sysinit.target初始化系统及basic.target准备操作系统
    (2)systemd启动multi-user.target下的本机与服务器服务
    (3)systemd执行multi-user.target下的/etc/rc.d/rc.local
    (4)Systemd执行multi-user.target下的getty.target及登录服务
    (5)systemd执行graphical需要的服务

设置内核参数

  • 设置内核参数,只影响当次启动
    启动时按e键,在linux16行后添加如下参数,Ctrl+x启动
    (1)systemd.unit=desired.target
    (2)systemd.unit=emergency.target
    (3)systemd.unit=rescue.target
    (4)rescue.target (比emergency支持更多的功能,例如日志等)
    (5)systemctl default (进入默认target)

实验:破解CentOS7的root口令方法一

  1. 启动时任意键暂停启动
  2. 按e键进入编辑模式
  3. 将光标移动linux16开始的行,添加内核参数rd.break,按ctrl-x启动
  4. 接下来如下:
switch_root# mount –o remount,rw /sysroot
switch_root# chroot /sysroot
sh-4.2# passwd root
sh-4.2# touch /.autorelabel
sh-4.2# sync
sh-4.2# exit
switch_root# reboot

实验:破解CentOS7的root口令方法二

  1. 启动时任意键暂停启动
  2. 按e键进入编辑模式
  3. 将光标移动linux16开始的行,改为rw init=/sysroot/bin/sh,按ctrl-x启动
  4. 接下来如下:
switch_root# chroot /sysroot
sh-4.2# passwd root
sh-4.2# touch /.autorelabel
sh-4.2# sync
sh-4.2# exit
switch_root# reboot

实验:修复GRUB2

  1. 修复配置文件
    grub2-mkconfig -o /boot/grub2/grub.cfg
  2. 修复grub
    grub2-install /dev/sda #BIOS环境(grub2-install #UEFI环境)
  3. 调整默认启动内核
    vim /etc/default/grub
     GRUB_DEFAULT=0

おすすめ

転載: blog.csdn.net/weixin_42758707/article/details/93516863