[命令] Linux 命令 systemctl (程序单元启动和管理)

内容一:受 systemctl 管理的单元列表

1.1 列出所有 systemctl 可用单元以及是否开机自启

# systemctl list-unit-files

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.2 列出所有 systemctl 正在运行的单元

# systemctl list-units

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.3 列出所有 systemctl 运行失败的单元

# systemctl --failed

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.4 列出所有受 systemctl 管理的服务单元

# systemctl list-units --type service


补充:
1) 所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.5 列出所有受 systemctl 管理的目标单元

# systemctl list-units --type target


补充:
1) 所有受 systemctl 目标管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

内容二:单元的状态显示

# systemctl status <unit>


补充:
1) systemctl 的主要状态项有:
Loaded 单元是否已被内存加载
Active 单元是否已成功运行
Main PID 单元主进程的 PID 号
Status 单元的其他相关信息

2) Active 状态项的参数有:
loaded 单元文件已经处理
active(running) 单元正在运行
active(exited)已完成单元的一次性配置
active(waiting)正在等待启动
inactive 没有启动
enabled 将在系统启动时自动启动
disabled 不会在系统启动时自动启动
static 可以被其他单元启动

3) 单元既可以是服务单元也可以是目标单元

内容三:单元的启动管理

3.1 启动某一个单元

# systemctl start <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.2 停止某一个单元

# systemctl stop <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.3 重启某一个单元

# systemctl restart <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.3 显示某一个单元是否正在运行

# systemctl is-active <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.4 启动并将一个单元设置为开机自启

# systemctl enable --now <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容四:单元的开机自启管理

4.1 让某一个单元开机自启

# systemctl enable <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

4.2 取消某一个单元的开机自启

# systemctl disable <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

4.3 显示某一个单元是否是开机自启

# systemctl is-enabled <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容五:单元的锁定管理

5.1 锁定某一个单元(禁止其启动)

# systemctl mask <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

5.2 取消某一个单元的锁定(让它可以启动)

# systemctl umask <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容六:重新加载某 systemctl 的配置文件

# systemctl daemon-reload

[命令] Linux 命令 iotop (显示某一个进程占用 IO 的情况) (转载)

记一次iotop分析磁盘占用io问题

问题描述    

                 某一台服务器上面 程序在每小时内偶尔丢包 排查服务器所有性能瓶颈之后发现一个奇怪的问题 程序丢包前后 会有IO过高的情况 于是使用iotop命令排查是哪个程序偶尔占用过高的磁盘IO

所用命令  

                 iotop

相关参数 

    -o:只显示有io操作的进程

    -b:批量显示,无交互,主要用作记录到文件

    -n NUM:显示NUM次,主要用于非交互式模式

    -d SEC:间隔SEC秒显示一次

    -p PID:监控的进程pid

    -u USER:监控的进程用户

排查方法

        iostat命令 只能看出每个盘符的IO情况 不能看到是具体哪个进程使用的IO 所以 我们需要使用iotop命令 但是这次的IO情况并不是一直出现 而是偶尔不规律出现 如果用肉眼去一直盯着终端看 显然不可行 于是我们可以用iotop的-b参数 让结果以非交互的方式输出 这样我们便可以用awk去处理 打印出我们需要的IO列以及相应的进程

命令

iotop -b | awk -F'%' '{if($(NF-1) > 0.2 && $(NF-1) ~ /[0-9]/ && $0 !~ /DISK/)printf "TIME: %s,IO:%s%,COMMAND:%s\n",strftime("%F %T"),$(NF-1),$NF}'

输出结果

[root@localhost ~]# iotop -b | awk -F'%' '{if($(NF-1) > 0.2 && $(NF-1) ~ /[0-9]/ && $0 !~ /DISK/)printf "TIME: %s,IO:%s%,COMMAND:%s\n",strftime("%F %T"),$(NF-1),$NF}'
TIME: 2018-03-21 18:04:23,IO:  0.23 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:04:35,IO:  0.44 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:04:47,IO:  0.22 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:04:58,IO:  0.39 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:05:08,IO:  0.68 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:05:22,IO:  0.52 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:05:34,IO:  0.24 %,COMMAND: [kworker/0:2]
TIME: 2018-03-21 18:05:45,IO:  0.26 %,COMMAND: [kworker/0:2]

        输出结果类似上面 这里只是简单举个例子 打印出IO大于0.2%的进程 并根据客户需求打印除相应的时间 这里的时间打印 利用awk自己的函数 strftime()
————————————————
版权声明:本文为CSDN博主「why_me310」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/why_me310/article/details/79643352

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z
站主补充:
 iotop 还有以下参数
-k, --kilobytes 在非交互的模式下,以 kb 为单位显示
-t, --time 在非交互的模式下,加上时间戳
-q, --quiet 在交互的模式下,禁止头几行,它有三种指定方式
    -q 只有在第一次显示时显示列名
    -qq 永远不显示列名
    -qqq 永远不显示 I/O 汇总的总量

[命令] Linux 命令 sar (报告系统活动情况) (转载)

sar

sar(SYstem ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况,系统调用的使用情况,磁盘I/O,CPU效率,内存使用状况,进程活动及IPC有关的活动;
sar命令有sysstat安装包安装
1.安装:[root@admin ~]# yum -y install sysstat
2.参数:
-u :输出CPU使用情况和统计信息
-p:报告每个CPU的状态
-q:查看平均负载
-r:查看内存使用情况
-W :查看系统swap分区的统计信息
-x:显示给定进程的统计信息
-b:查看I/O和传递速率的统计信息
 -d:磁盘使用详细统计
 -v:进程,inode,文件和锁表状态
 -n:统计网络信息
-u :输出CPU使用情况和统计信息
-A:所有报告总和
-i:设置状态信息刷新的间隔时间
    [root@admin ~]# sar -u 1 3  (每隔一秒总共统计三次;统计CPU的使用情况)
在以上的显示中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘I/O无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况半段CPU是否瓶颈。
2.2 -p:报告每个CPU的状态
    [root@admin ~]# sar -p 1 3 (报告每个CPU的使用状态)
2.3 将统计结果保存在文件中,并从文件读取内容
        [root@admin ~]# sar -u -o /servers/script/sar.txt 2 3 (保存之文件,保存后的文件是二进制的,无法使用vim和cat查看)
        [root@admin ~]# sar -u -f /servers/script/sar.txt (从二进制文件读取)
注:将输出到文件(-o)和读取记录信息(-f)
2.4 -q:查看平均负载
        [root@admin ~]# sar -q 1 3
2.5-r:查看内存使用情况
        [root@admin ~]# sar -r
2.6 -W :查看系统swap分区的统计信息
2.7 -b:查看I/O和传递速率的统计信息
2.8 -d:磁盘使用详细统计
2.9 -v:进程,inode,文件和锁表状态
2.10 -n:统计网络信息
        1) DEV:网络接口统计信息
        2) EDEV:网络接口错误
        3)IP:IP数据报统计信息
        4):EIP:IP错误统计信息
         5)TCP:TCP统计信息
          6)ETCP:TCP错误统计信息
         7)SOCK:套接字使用
————————————————
版权声明:本文为CSDN博主「喵喵Amy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/an1415/article/details/80761614

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本和图片中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z

[命令] Linux 命令 fsck (检测和修复硬盘文件系统) (转载)

Linux fsck命令:检测和修复文件系统

计算机系统难免会因为人为的误操作或系统的原因而出现死机或突然断电的情况,这种情况下非常容易造成文件系统的崩溃,严重时甚至会造成硬件损坏。这也是我们一直在强调的服务器一定要先关闭服务再进行重启的原因所在。

如果真出现了文件系统损坏的情况,难道就没有修复的办法吗?我们现在要讲的 fsck 命令就是用来进行文件系统检侧与修复的。

fsck 命令格式如下:
[root@localhost ~]# fsck [选项] 分区设备文件名

选项:
-t 文件系统:指定分区的文件系统;
-A:按照配置文件 /etc/fstab 检查所有分区;
-a:不用显示用户提示,自动修复文件系统;
-C:显示检查分区的进度条;
-f:强制检测。一般 fsck 命令如果没有发现分区有问题,则是不会检测的。如果强制检测,那么不管是否发现问题,都会检测;
-y:自动修复。和 -a 作用一致,不过有些文件系统只支持 -y;

如果想要修复某个分区,则只需执行如下命令:
[root@localhost ~]#fsck -y /dev/sdb1
#自动修复
————————————————
版权声明:本文为CSDN博主「清华大学张阳阳」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zyy1659949090/article/details/88176666

注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来

CC 4.0 BY-SA 版权协议网址:https://creativecommons.org/licenses/by-sa/4.0/deed.z
站主补充:
检查 ext4 格式的存储时的命令:
# fsck.ext4 -y /dev/vda