linux centos服务控制
服务控制
systemctl {选项} name.servive
选项
start 启动
stop 停止
restart 重启,先停止,再启动
reload 重新加载配置文件,不会完全停止和启动服务
status 状态
is-active 是否启动成功
is-failed 是否启动失败
enable 开机自启
disable 关闭开机自启
is-enabled 是否开机自启
list-dependencies 查看依赖关系
mask 屏蔽服务
unmak 取消屏蔽
查看进程
ps查看静态的进程统计信息
a:显示当前终端下的所有进程信息,包括其他用户的进程。与x选项结合时将显示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-l:使用长(Long)格式显示进程信息。
-f:使用完整的(Full)格式显示进程信息。
ps aux
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 191248 4244 ? Ss 06:08 0:01 /usr/lib/systemd/systemd --switched-
root 2 0.0 0.0 0 0 ? S 06:08 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 06:08 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S<
···省略
root 12594 0.3 0.1 163448 6096 ? Ds 10:04 0:00 sshd: root@pts/1
root 12598 0.4 0.1 116644 3272 pts/1 Ss 10:04 0:00 -bash
root 12617 0.1 0.2 350468 6556 ? Sl 10:04 0:00 /usr/sbin/abrt-dbus -t133
root 12640 0.0 0.0 155360 1888 pts/1 R+ 10:04 0:00 ps aux
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一的。
%CPU:CPU占用的百分比。
%MEM:内存占用的百分比。
VSZ:占用虚拟内存(swap空间)的大小。
RSS:占用常驻内存(物理内存)的大小。
TTY:表明该进程在哪个终端上运行。?表示未知或不需要终端。
STAT:显示进程当前的状态,如S可中断休眠进程、D不可中断休眠进程、R运行、Z僵死、
<高优先级、N低优先级、s父进程、l多线性进程、+前台进程。对处于僵死状态的进程应该予以手动终止。
START:启动该进程的时间。
TIME:该进程占用的CPU时间。
COMMAND:启动该进程的命令的名称。
ps -elf
ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 47812 ep_pol 06:08 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --
1 S root 2 0 0 80 0 - 0 kthrea 06:08 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 06:08 ? 00:00:00 [ksoftirqd/0]
···省略
4 S root 12598 12594 0 80 0 - 29161 do_wai 10:04 pts/1 00:00:00 -bash
0 S root 12718 6345 0 80 0 - 26988 hrtime 10:11 ? 00:00:00 sleep 60
0 R root 12719 12598 0 80 0 - 38840 - 10:12 pts/1 00:00:00 ps -elf
PPID:当前进程的父进程
C:CPU占用
PRI:用户态的进程优先级
NI:内核态的进程优先级,取值范围-20~19,数值越低,优先级越高。
ADDR:-表示正在运行
SZ:虚拟内存swap占用
WCHAN:当前进程在内核中的名称
top查看进程动态信息,每3s刷新一次
top
top - 19:27:16 up 3:36, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 6.2 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867024 total, 1348360 free, 148256 used, 370408 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1525688 avail Mem
Tasks系统任务信息:total总进程数,running正在运行的进程数,sleeping休眠的进程数,
stopped中止的进程数,zombie僵死无响应的进程数。
CPU占用信息:us用户占用,sy内核占用,ni优先级调度占用,id空闲CPU,waI/O等待占用,
hi硬件中断占用,si软件中断占用,st虚拟化占用。
Mem内存占用信息:total总内存空间,free空闲内存,used已用内存,buff/cache,物理内存和交换内存的缓冲区总和。
Swap交换空间占用:total总交换空间,free空闲交换空间,used已用交换空间,avail Mem可用物理空间。
load average相关梳理(一分钟,五分钟,十五分钟的平均CPU负载,最重要的指标是最后一个数字,即前15分钟的平均CPU负载,这个数字越小越好。
所谓CPU负载指的是一段时间内任务队列的长度,通俗的讲,就是一段时间内一共有多少任务在使用或等待使用CPU。(当前的"负载值除以cpu核数"就是cpu的利用率))
pgrep过滤查询进程信息
-l:同时输出对应的进程名,否则只输出PID,不便于查看。
-U:查询特定用户的进程
-t:查询特定终端运行的进程
pstree查看进程树
-a:列出完整的命令信息
-u:列出对应的用户名
-p:列出对应的PID号
控制进程
&运行较长时间的操作时,命令后面加&符号,放到后台运行
Ctrl + C终止正在执行的进程
Ctrl + Z将前台正在执行的进程调入后台并暂停执行
jobs 选项查看当前终端在后台运行的进程任务
-l:显示进程对应的PID号
bg ID将后台中暂停执行的任务恢复运行,并继续在后台运行,需指定任务编号作为参数
fg ID将后台中的任务恢复到前台运行,需指定任务编号作为参数
kill 通过PID终止进程运行,无特定选项时,给程序发送终止信号并正常退出运行
-9:强制终止
killall 进程名称
通过进程名终止运行,需要结束多个相同名称的进程时,killall更方便。
pkill 选项
特定条件终止,与pgrep类似
-U:指定用户
-t:指定终端
一次性计划任务
at [HH:MM] [YYYY-MM-DD]
设置完,按Ctrl + D退出
service atd start 启动atd系统服务
at [HH:MM] [YYYY-MM-DD] 小时:分钟 年-月-日
at>需要执行的操作
at><EOT> 按Ctrl+D提交任务
at计划任务文件位置
/var/spool/at/a开头的文件,任务执行完毕,文件消失
atq
查询还未执行的计划任务
at -c 任务号
查看计划任务的具体内容
atrm 编号
删除指定任务编号的at任务
周期计划任务
crontab命令
分钟 小时 日期 月份 星期 命令
取值范围
分钟0-59
小时0-23
日期1-31
月份1-12
星期0-7,0或7代表星期日
命令要执行的命令或程序脚本
时间数值的特殊表示方法
*表示该范围内任意时间
,表示间隔的多个不连续时间点
-表示一个连续的时间范围
/n指定间隔的时间频率
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18 * * * 8点到18点整
0 12 */3 * * 每隔3天的12点整
管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
实例:创建目录/tmp/testdir-当前日期时间
mkdir /tmp/testdir-$(date +%Y%m%d%H%M)
ls /tmp/
实例:每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形式如etc-2022101010
crontab -e
00 */4 * * * cd / && tar -jcf /backup/etc-$(date +\%Y\%m\%d\%H\%M).tar.bz etc/
实例:每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,
保存的文件名格式为messages-20150402
crontab -e
00 00 * * 2,4,6 cd /var/log/ && tar -jcf /backup/messages_logs/messages-$(date +\%Y\%m\%d).tar.bz messages
实例:每天每两小时取当前系统/tar/op.txt文件中的所有以S开头的信息至/tmp/po.txt文件中。
crontab -e
* */2 * * *b grep "^S" /tar/op.txt > /tmp/po.txt
实例:工作日的工作时间内,每两小时执行一次echo“howdy”
crontab -e
* */2 * * 1-5 echo "howdy"