dd --一个强大的拷贝工具,拷贝文件或者物理块,它可以操作普通文件,也可以操作设备文件。
if=源文件名 in file
of=目标文件名 out file
bs=xxx 指定块大小 block size
count=n 指定复制块的数量
dd if=/dev/sda of=/opt/mbr bs=512 count=1 --备份主引导记录
dd if=/opt/mbr of=/dev/sda bs=512 count=1 --恢复
#dd if=/dev/cdrom of=/root/dvd.iso 拷贝光盘数据到root文件下,并保存为dvd.iso文件
#cat /dev/cdrom > /root/dvd.iso 查看文件内容重定向到/root/dvd.iso中
dd if=/dev/zero of=/root/1Gb.file bs=1M(1024) count=1024 测试硬盘读写速度
# dd if=/etc/services of=./txt 等价 # cp /etc/services ./txt
# dd if=/etc/services of=./txt bs=10 count=1 读取文件前10字符写入到 txt文件
--------------------------------------------------------------------------------------
计划任务:服务名atd.service
at -一次性计划任务,不能跨越0点。
# yum install -y at.x86_64 ---安装at 指令
#rpm -q at --确认at这个命令是否已经安装
###########################################################
# rpm -ql at
/usr/lib/systemd/system/atd.service ---at 服务名为atd
/etc/at.deny --拒绝用户
/etc/pam.d/atd --认证
/etc/rc.d/init.d/atd --at服务启动脚本
/usr/bin/at --设置计划任务的命令
/usr/bin/atq --查看at的任务列表
/usr/bin/atrm --删除任务
/var/spool/at/.SEQ --记录任务的编号
/var/spool/at/ --at 计划任务的数据目录,生成计划任务的可执行脚本文件在该目录下
<rhel/5/6>
# /etc/rc.d/init.d/atd status --查看atd服务的状态
# /etc/rc.d/init.d/atd start --启动atd服务
# chkconfig atd on --设置开机时启动at服务
<rhel7>
# systemctl status atd --查看atd服务的状态
# systemctl start atd --启动atd服务
# systemctl enable atd --设置开机时启动at服务
确保atd 服务启动工作(查看状态)
[root@localhost ~]# systemctl status atd
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2022-07-28 11:12:04 CST; 20min ago
# at 设置 计划任务
[root@localhost ~]# at 11:38 ----添加一个今天内的任务
at> echo "hello at"
at> wall "hello wall"
at> <EOT> <<<=====ctrl + d 表示输入结束
job 3 at Thu Jul 28 11:38:00 2022
-t 参数指定时间 format [YY]MMDDhhmm[.ss]
[root@localhost ~]# at -t 202207290500 ----指定在某天某时的计划任务
at> find / -type f -a -size 0 -exec rm -rf {} \;
at> reboot
at> <EOT>
-f 从文件中读取任务内容
# cat ./txt
find /usr -name "*.png" -exec tar -rf /tmp/png.tar.gz {} \;
# at -t 2302240430 -f ./txt
# atq --通过命令来查看at的任务列表 等价 # at -l
3 2011-08-10 15:13 a root
5 2011-08-10 16:00 a root
4 2011-08-10 16:14 a root
#at -c jobId 查看具体某个任务
[root@instructor ~]# ls /var/spool/at/ --通过文件路径查看任务
a00003014de731 a00004014de76e a00005014de760 spool
# atrm 2 ---删除2号at计划任务 ,等价 # at -r 2 或 #at -d 2
++++++++++++++++++++++
/etc/at.allow 如果这个文件存在,就不去考虑at.deny.而且他的作用:只允许文件里面出现的用户使用atd这个服务
# vim /etc/at.allow
test1
# rm -fr /etc/at.allow
/etc/at.deny 如果at.allow不存在的时候,才生效,作用:只拒绝里面的用户使用atd
+++++++++++++++++++++
crontab --循环计划任务
systemctl status crond.service ----检查是否已安装该服务
[root@instructor ~]# rpm -ql cronie
/etc/cron.d --系统默认任务划
/etc/cron.deny --只拒绝哪些用户不能他用crontab
/etc/pam.d/crond --pam认证
/etc/rc.d/init.d/crond --启动脚本
/etc/sysconfig/crond --额外配置文件
/usr/bin/crontab --计划任务的管理命令
/usr/sbin/crond --后台服务
/var/spool/cron/<username> --存放计划任务目录,以用户的名字命名
crontab创建任务计划:
-e 编辑任务计划,同于vi vim操作方法
-l 查看计划任务
-u 指定用户
# crontab -e --以当前用户身份创建任务计划
# crontab -u <username> -e --指定的用户身份创建任务计划,只有root拥有此权限
# crontab -l --查询当前用户的任务计划
# crontab -u <username> -l --查询指定用户的任务计划
# crontab -u root -r --删除用户的任务计划
# crontab -u uplooking -r --删除 uplooking用户的所有计划任务(只有root用户可以删除 和 查看 其他用户的任务)
循环计划任务文件编辑如下5项内容格式
crond以分钟/小时/日期/月/星期
# Example of job definition:
# .---------------- 分钟 (0 - 59)
# | .------------- 小时 (0 - 23)
# | | .---------- 日期 (1 - 31)
# | | | .------- 月份 (1 - 12) OR jna,feb,mar,apr ...
# | | | | .---- 星期几 (0 - 6) | (1-7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * 执行命令或者脚本
* ---表示任意
- --连接的值 5-7
/ --每 */2
, --或者 5,9
3-15/2 --- 从3 到 15的每 2
---------------------------------------------------------------------------------------
* * * * * command --每分钟
*/2 * * * * command --每隔2分钟
00 22 1 1 * command --每年1月1日22点执行任务计划
00 08,10,12 * * 1,3,5 command 每个星期1、3、5的8点、10点、12点执行任务计划
30 08 10-15 * * command --每月10到15号的08:30执行任务计划
为uplooking用户编辑任务计划:每天23:05执行命令,echo abc 到屏幕
crontab -eu uplooking
05 23 * * * /bin/echo abc | wall
date -s 23:04:00
每天的14-17点每隔10分钟输出 hello
crontab -eu uplooking
*/10 14-17 * * * echo hello
*/10 14-17 * * * /bin/echo “Hello World”
* * * * * /usr/bin/updatedb
查看某个用户的任务计划
crontab -l u uplooking
建立每分钟时间同步脚本
vi /bin/time.sh
#!/bin/bash
/usr/sbin/ntpdate 192.168.0.254 > /dev/null 2>&1
文件必须具有可执行
chmod u+x /bin/time.sh
假如以用户身份创建
crontab -e
* * * * * /bin/time.sh <- 不需要定义用户名
给kiki每分钟发送一份邮件
crontab -e
*/1 * * * * mail kiki < /home/test/lover.txt
*/1 * * * * mail station200.example.com < /home/test/lover.txt
练习:
1.每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
[root@localhost ~]# crontab -e
#ps 注意 在任务计划中 % 要进行转意
* * * * * date +"\%F \%H:\%M:\%S" >> /tmp/mydate
2.每隔一分钟,就将当前日期和日历都追加到/home/mycal文件中
[root@localhost ~]# crontab -e
#如果任务需要多条命令时,用 ";" 隔开
* * * * * date +"\%F" >> /tmp/mycal;cal >> /tmp/mycal
3.在每天的凌晨1点的30到45分之间每隔一分钟,就将当前日期和日历都追加到/home/mycal文件中
# crontab -e
30-45 1 * * * date +"\%F" >> /tmp/mycal;cal >> /tmp/mycal
4.在每天的凌晨1点的30到45分之间每隔五分钟,就将当前日期和日历都追加到/home/mycal文件中
# crontab -e
30-45/5 1 * * * date +"\%F" >> /tmp/mycal;cal >> /tmp/mycal
5.写一条crontab条目,每天的22点钟删除/tmp下的所有文件
[root@localhost ~]# crontab -e
0 22 * * * rm -rf /tmp/*
6.每逢星期一下午5:50将/etc 目录下的所有目录和文件归档并压缩为文件:/opt/etcBackup.tar.gz
[root@localhost ~]# crontab -e
50 17 * * 1 tar -cf /op/etcBackup.tar.gz /etc/
7.在每周6的凌晨3:15执行/usr/local/check.sh, 并将标准输出和标准错误输出到/dev/null设备
[root@localhost ~]# crontab -e
15 03 * * 6 /usr/local/check.sh &> /dev/null
注意:脚本文件必须具备 x 执行权限
8.每个月的一号,零点十五执行重启网络服务
[root@localhost ~]# crontab -e
15 0 1 * * systemctl restart network
指定 run-parts 满足某个时间关系的批量任务
# vi /etc/crontab
# run-parts
0 * * * * root run-parts /etc/cron.hourly 注:表示每个小时整点,开始执行/etc/hourly目录下的可执行程序或脚本;
2 4 * * * root run-parts /etc/cron.daily 注:表示每天的4点2分,开始执行/etc/cron.daily目录下的可执行程序或脚本;
22 4 * * 7 root run-parts /etc/cron.weekly 注:每年第7个周4点我22分,开始执行 /etc/cron.weekly目录下的可执行程序或脚本;
42 4 1 * * root run-parts /etc/cron.monthly 注:每月第1天的4点42分,开始执行/etc/cron.monthly目录下的可执行程序或脚本;
重启循环计划任务服务
# systemctl restart crond
例如 每小时都要做的任务,可以将任务脚本 写在 /etc/cron.hourly 目录之下,当时间条件满足是回执行该目下的所有任务
备份脚本
备份三天以内的内容
mkdir `date +%F '--date=3 day ago'`
mkdir /www/
cd /www
cd /www_backup
++++++
1.让它在工作日(星期1-5 || 单数月|| 每天|| 凌晨5点10执行 )
3.计划任务由u01执行,
4. 系统只允许u01与u02可以执行计划任务
echo "u01" >> /etc/cron.allow
echo "u02" >> /etc/cron.allow