Linux计划任务与进程 使用at执行定义任务 了解linux进程相关的命令 使用网络相关的命令 一、Linux计划任务 计划任务是Linux系统中非常实用的功能,它允许用户在指定的时间自动执行特定的命令或脚本,无需人工干预。 ==定时备份== ==服务重启== ==资源监控== ==故障服务== 计划任务权限 Linux系统中对计划任务的使用有权限控制,主要通过黑名单和白名单来实现。 黑名单 crontab是任何用户都可以创建的计划任务,但是超级管理员可以通过配置来设置某些用户不允许设置计划任务。 案例:把普通账号zkingtest加入到cron.deny黑名单中,禁止其创建计划任务 步骤: 1. 切换到超级管理员root ```bash su - root ``` 2. 使用vim打开/etc/cron.deny文件 ```bash vim /etc/cron.deny ``` 3. 把需要禁止的用户名单加入此文件(如zkingtest) ``` zkingtest ``` 保存退出后,切换到zkingtest账号,测试是否可以使用crontab命令:
```bash
su - zkingtest
crontab -e
系统会显示错误信息,表示该用户无权使用crontab命令。白名单 在Linux的计划任务中,除了黑名单以外,还有白名单。**作用**:允许哪些用户使用计划任务。 白名单文件的路径=>`/etc/cron.allow`,但是要特别注意,此文件需要手工创建。 注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。 案例:创建白名单,只允许user1和user2使用计划任务
```bash
vim /etc/cron.allow
```
添加以下内容:
user1
user2
白名单中 xmg 只要设置了白名单,除了白名单中的人其他人丢无法使用crontab 查看计划任务的保存文件 问题:计划任务文件具体保存在哪里呢? 答:`/var/spool/cron/用户名称`,如果使用root用户编辑计划任务,则用户文件名为root ```bash ll /var/spool/cron total 4 -rw------- 1 zkingtest zkingtest 0 Mar 24 09:50 zkingtest -rw------- 1 root root 40 Mar 24 10:21
查看具体内容: ```bash cat /var/spool/cron/root ``` 这个文件包含了用户设置的所有计划任务,每行一个任务。 计划任务的日志程序 问题:在实际应用中,我们如何查看定时任务运行情况? 答:通过计划任务日志,日志文件位于`/var/log/cron` 案例:演示计划任务的日志程序 第一步:使用root账号创建一个计划任务 ```bash su - root crontab -e * * * * * echo 1 >> ~/readme.txt ``` 此计划任务将每分钟向root用户主目录下的readme.txt文件追加数字1。 第二步:使用tail -f命令监控/var/log/cron日志程序 ```bash tail -f /var/log/cron ``` 你会看到类似以下的日志条目: ``` Mar 24 10:21:01 localhost crond[12345]: (root) CMD (echo 1 >> ~/readme.txt) ``` 这表示计划任务正在执行。要验证结果,可以查看readme.txt文件: ```bash cat ~/readme.txt ``` 文件内容应该包含多个"1",表示任务已多次执行。 扩展内容:at命令 在Linux系统下,有两个命令可以实现计划任务:crontab与at(第三方需要额外安装) - **crontab**:每天定时执行计划任务,适合周期性任务 - **at**:一次性定时执行任务,执行完后不再重复 安装at命令 CentOS7自带,其他版本可能需要手工安装 ```bash yum install at -y
启动底层服务 ```bash systemctl start atd systemctl enable atd ``` ``` atd = at + d = at命令 + daemon(守护进程)缩写 ``` 案例演示 案例1:三天后下午5点执行/bin/ls ```bash at 5pm + 3days at>/bin/ls at>按Ctrl+D ```
进程信息: ``` PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H ``` - **PID**: 进程ID - **USER**: 进程所属用户 - **PR**: 进程的优先级 - **NI**: 进程的nice值,影响进程的优先级 - **VIRT**: 进程使用的虚拟内存总量 - **RES**: 进程使用的物理内存总量 - **SHR**: 进程使用的共享内存量 - **S**: 进程状态(R=运行,S=睡眠,Z=僵尸等) - **%CPU**: 该进程使用的CPU百分比 - **%MEM**: 该进程使用的内存百分比 - **TIME+**: 进程使用的CPU时间 - **COMMAND**: 进程的命令名称 在top命令运行时,用户可以输入特定的按键来执行不同的操作,例如: *P*:按CPU使用率排序。 *M*:按内存使用率排序。 *T*:按CPU时间累计排序。 *k*:发送信号给进程,通常用于终止进程。 *r*:重新设置进程的nice值,即优先级。
基本语法:
-t:TCP
-u:UDP
-n:数字地址
-l:监听的端口
-p:PID和进程名称
www.douyin.com