计划任务
一、cron 计划任务
周期性计划任务
cron 任务概述
• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
• 软件包:cronie、crontabs
• 系统服务:crond
• 日志文件:/var/log/crond
管理计划任务策略
• 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]
如何编写 crontab 任务记录
• 配置格式可参考 /etc/crontab 文件
执行周期 配置说明
分钟 从0到59之间的整数
小时 从0到23之间的整数
日期 从1到31之间的整数
月份 从1到12之间的整数
星期 0~7之间的整数,0或7代表星期日
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n
[root@localhost ~]# crontab -e #以当前用户身份编辑计划任务
* * * * * date >> /opt/time.txt
[root@localhost ~]# crontab -l #查看计划任务
* * * * * date >> /opt/time.txt
[root@localhost ~]# watch -n 1 cat /opt/time.txt #每秒查看一次文件
# 新开启一个终端执行以下命令
[root@server0 ~]# tail -f /var/log/cron #实时查看 cron 的日志文件,Ctrl + c 可以退出查看
二、程序与进程
- 程序
保存在磁盘中的可执行文件
是静态保存的代码 - 进程
在CPU及内存中运行的程序指令
是动态执行的代码 - PID:进程编号
- 父/子进程:进程可以创建一个或多个子进程,是树型结构
进程管理
查看进程树
• pstree — Processes Tree
– 格式:pstree [选项] [PID 或用户名]
常用命令选项
– -a:显示完整的命令行
– -u:列出各进程所属的用户名
– -p:列出对应 PID 编号
[root@localhost ~]# pstree #查看整个进程树信息
[root@localhost ~]# pstree -u lisi #未发现进程。
使用Ctrl + Shift + T快捷键另开一个终端
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ vim a.txt #不编辑,不退出即可
回到之前终端
[root@localhost ~]# pstree -u lisi #显示 lisi 用户正在运行的进程
bash───vim
[root@localhost ~]# pstree -pu lisi #p,显示 pid 号
bash(11980)───vim(12017)
[root@localhost ~]# pstree -apu lisi #a,显示完整的命令行
bash,11980
└─vim,12017 a.txt
三、查看进程
查看进程快照
ps -Processes Snapshot
格式:ps [选项]…
- ps aux 操作:信息非常全面详细
– 列出正在运行的包含其他用户的所有进程- a:显示当前终端所有进程
- u 用户名:列出指定用户的所有进程。
- x:当前用户在所有终端下的进程
- ps -elf 操作:信息中有该进程的父进程信息
– 列出正在运行的所有进程- e:显示系统内所有进程
- f,以完全格式化的形式展示信息(展示全部信息)
- ef:显示所有进程的完整格式列表。
- l:以长格式输出信息,包括最完整的进程信息
可以先使用“ pgrep <进程名> ”命令查找该进程的PID,然后再使用 “ ps -p -o ppid= ”命令查看它的PPID。
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
用户 进程 ID %cpu %内存 虚拟内存 固定内存 终端 状态 起始时间 cpu 时间 程序指令
PPID:代表父进程的 PID
[root@localhost ~]# ps -elf | wc -l #统计正在运行的进程有多少个
223
进程动态排名
- top 交互式工具,默认 3 秒刷新一次
– 格式:top [-d 刷新秒数] [-U 用户名]
top命令选项
[root@localhost ~]# top #查看进程,默认每隔 3 秒刷新一次
[root@localhost ~]# top -d 1 #每隔 1 秒刷新一次
top命令内容详解
2.
3.
top交互式选项
- 按大写 P 根据 CPU 使用进行排序,CPU 占用最高的排首位
按大写 M 根据内存使用进行排序,内存占用最高的排首位
检索进程信息
- pgrep — Process Grep
– 用途:pgrep [选项]… 查询条件 - 常用命令选项
– -l:输出进程名,而不仅仅是 PID
– -U:检索指定用户的进程
– -t:检索指定终端的进程
– -x:精确匹配完整的进程名
[root@localhost ~]# pgrep a #检索进程名包含 a 的进程,但是只显示 PID
[root@localhost ~]# pgrep -l a #检索进程名包含 a 的进程,-l 输出进程名称
[root@localhost ~]# pgrep -l crond
1246 crond
[root@localhost ~]# pgrep -lU lisi #检索 lisi 用户的进程
进程管理
进程的前后台调度
- 前台启动
—输入正常的命令行
—运行期间占用当前终端 - 后台启动
– 在命令行末尾添加“&”符号,以正在运行的状态放入后台
—运行期间不占用当前终端
root@localhost ~]# sleep 3 #当前终端睡 3 秒
root@localhost ~]# sleep 1000 #当前终端睡 1000 秒,会一直占用这个终端
root@localhost ~]# sleep 1000 & #当前终端睡 1000 秒,但是是放到后台,不影响使用终端
root@localhost ~]# firefox
root@localhost ~]# firefox &
- Ctrl + z 组合键
– 挂起当前进程 (暂停并转入后台) - jobs:查看后台任务列表
[root@svr7 ~]# jobs #查看后台进程任务列表
[root@svr7 ~]# sleep 1000
^Z #按 Ctrl+z 暂停放入后台
[2]+ 已停止 sleep 1000
[root@svr7 ~]# jobs
- bg:激活后台被挂起的任务
[root@svr7 ~]# bg 2 #将后台编号为 2 的进程继续运行
[root@svr7 ~]# jobs
- fg:将后台任务恢复到前台运行
[root@svr7 ~]# fg 2 #将后台编号为 2 的进程恢复到前台
sleep 800
^C #按 Ctrl+c 终止进程
[root@svr7 ~]# jobs
[root@svr7 ~]# fg 1
sleep 1000
^C
[root@svr7 ~]# jobs
杀死进程
- 干掉进程的不同方法
– Ctrl+c 组合键,中断当前命令程序
– kill [-9] PID… 、kill [-9] %后台任务编号,-9 强制杀死
– killall [-9] 进程名…
– pkill 查找条件
[root@svr7 ~]# sleep 1000 &
[1] 21406
[root@svr7 ~]# sleep 2000 &
[2] 21407
[root@svr7 ~]# sleep 3000 &
[3] 21408
[root@svr7 ~]# jobs -l #-l 显示进程的 pid
[root@svr7 ~]# kill 21406 #杀死 pid 为 21406 的进程
[root@svr7 ~]# killall sleep #杀死所有 sleep 进程
[3]+ 已终止 sleep 3000
[root@svr7 ~]# jobs -
[root@localhost ~]# vim a
[2]+ 已停止 vim a
[root@localhost ~]# jobs -l
[2]- 5310 停止 vim a
[root@localhost ~]# kill 5310 #命令没有报错,但是没有杀死
[root@localhost ~]# jobs -l
[2]- 5310 停止 vim a
[root@localhost ~]# kill -9 5310 #使用-9 选项,可以杀死
[2]- 已杀死 vim a
[root@localhost ~]# jobs -l
杀死一个用户的开启的所有进程(强制踢出一个用户)
[root@localhost ~]# pkill -9 -u lisi
日志管理
日志的功能
- 系统和程序的“日记本”
– 记录系统、程序运行中发生的各种事件
– 通过查看日志,了解及排除故障
– 信息安全控制的“依据” - 由系统服务 rsyslog(日志服务)统一记录/管理
日志消息采用文本格式
主要记录时间发生的还是件,主机,进程,内容 - 常见的日志文件
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与 cron 计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
日志分析
- 通用分析工具
– tail、tailf、less、grep 等文本浏览/检索命令
– awk、sed 等格式化过滤工具 - tailf:实时跟踪日志消息
[root@svr7 ~]# echo 123 > /opt/1.txt
[root@svr7 ~]# cat /opt/1.txt
123
[root@svr7 ~]# tailf /opt/1.txt
123
另开一个终端,写入内容
[root@localhost ~]# echo xixhaha >> /opt/a.txt
- 之前动态查看的文件会有变化
[root@localhost ~]# tailf /opt/a.txt
123
xixhaha
用户登录分析
- 用户登录分析
• users、who、w 命令
– 查看已登录的用户信息,详细度不同
• last、lastb 命令
– 查看最近登录成功/失败的用户信息
[root@localhost ~]# users #输出信息简单,只显示用户
root root root
[root@localhost ~]# who
root :0 2020-07-07 00:40 (:0) #:0:图形的终端
root pts/0 2020-07-07 10:32 (:0) # pts/0:图形的命令行
root pts/1 2020-07-07 10:32 (192.168.4.1)
[root@localhost ~]# w #对显示的字体有要求,太大会显示失败
w: 64 column window is too narrow
[root@localhost ~]# w #正常显示
[root@localhost ~]# last #显示最近登录成功的用户信息
[root@localhost ~]# lastb #显示最近登录失败的用户信息
[root@localhost ~]# last -2 #显示最近 2 条登录成功的用户信息
[root@localhost ~]# lastb -2 #显示最近 2 条登录失败的用户信息
日志消息的优先级
- Linux 内核定义的事件紧急程度
– 分为 0~7 共 8 种优先级别
– 其数值越小,表示对应事件越紧急/重要
0 EMERG(紧急) 会导致主机系统不可用的情况
1 ALERT(警告) 必须马上采取措施解决的问题
2 CRIT(严重) 比较严重的情况
3 ERR(错误) 运行出现错误
4 WARNING(提醒) 可能会影响系统功能的事件
5 NOTICE(注意) 不会影响系统但值得注意
6 INFO(信息) 一般信息
7 DEBUG(调试) 程序或系统调试信息等
服务管理
systemd 介绍
init 程序作用
- Linux 系统和服务管理器
– 是内核引导之后加载的第一个初始化进程(PID=1)
– 负责掌控整个 Linux 的运行/服务资源组合 - 传统的 init 程序风格
– ststem v:顺序加载,RHEL5 系列采用
– upstart:时间触发,RHEL6 系列采用
systemd
- 一个更高效的系统&服务管理器
– 开机服务并行启动,各系统服务间的精确依赖
– 配置目录:/etc/systemd/system/
– 服务目录:/lib/systemd/system/
– 主要管理工具:systemctl - 服务目录:
[root@localhost ~]# ls /lib/systemd/system/
[root@localhost ~]# ls /lib/systemd/system/sshd.service
- 主要管理工具:systemctl
查看 crond 服务的状态:
systemctl status crond
重启
systemctl restart 服务名
启动
systemctl start 服务名
关闭
systemctl stop 服务名
设置服务开机自启
systemctl enable 服务名
设置服务不开机自启
systemctl disable 服务名
查看是否开自启动
systemctl is-enabled 服务名
管理运行级别
- RHEL7 运行模式
- 字符模式:multi-user.target
- 图形模式:graphical.target
- 列出可以运行的级别
[root@localhost ~]# systemctl -t target - 当前直接切换到字符模式
[root@localhost ~]# systemctl isolate multi-user.target - 当前直接切换到图形模式
[root@localhost ~]# systemctl isolate graphical.target - 查看每次开机默认进入的模式
[root@localhost ~]# systemctl get-default
graphical.target - 设置永久策略,每次开机自动进入 multi-user.target
[root@localhost ~]# systemctl set-default multi-user.target
[root@localhost ~]# reboot
[root@localhost ~]# runlevel
N 5 #旧级别,当前级别 - 设置永久策略,每次开机自动进入 graphical.target
[root@localhost ~]# systemctl set-default graphical.target
[root@localhost ~]# reboot
[root@localhost ~]# runlevel - 补充:
RHEL6 运行级别
0:关机
1:单用户模式(基本功能的实现,破解 Linux 密码)
2:多用户字符界面(不支持网络)
3:多用户字符界面(支持网络)服务器默认的运行级别
4:未定义
5:图形界面
6:重启
切换运行级别:init 5