“find” 命令
-exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。
{ }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中;
-exec一直到 ; 是关键字,代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作
因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。
find /root -size 10M -exec rm -rf {} ;
# 重命名
find /root -name tom -exec mv {} tom_rename ;
# 移动
find /root -name tom_rename -exec mv {} /tmp ;
grep pass /root/anaconda-ks.cfg
cut -d 分割内容
#以空格分隔取第一列
cut -d " " -f 1
shell的函数定义
#1、
function function_name(){#function_name函数名
#代码块
}
#2、
function_name(){#function_name函数名
#代码块
}
function cdls(){
cd ~
ls
}
#函数内使用位置参数
function cdls(){
cd ~
ls $1
return 0
}
# local 变量名 定义函数局部变量
function cdls(){
local path=$1
cd ~
ls $path && return 1
}
Linux自带的函数
/etc/init.d/functions
环境变量
/etc/profile
用户命令和配置
~/.bashrc
用户环境变量
~/.bash_profile
ulimit -a 查看系统限制
脚本控制
1、脚本优先级 (nice renice)
2、捕获信号 (kill)
kill默认会发生15号信号给应用
ctrl+c 发送信号2号信号
9号信号 不可阻塞
kill -信号值 进程号 给指定进程发生信号
trap 命令捕获传入的信号值
trap “执行内容” 信号值
计划任务
一次性
at hh:mm:ss
at hh:mm
[root@localhost ~]# at 18:42
at> echo hhhhhh > /data/aaaa.txt
at> <E
job 2 at Tue Jul 20 18:42:00 2021
ctrl+d 提交定时任务
atq 查好还未执行的定时任务
非内部命令要写绝对路径 shell脚本要source file.sh执行引入环境变量
计划任务是无终端运行的无标准输出,需要重定向输出
周期性计划(cron)
crontab -e
分钟 小时 日期 月份 星期 执行的命令
#每分钟运行一次,*表示任意时间单位
* * * * * /usr/bin/date >> /data/date.txt
#每周的周一和周五运行
* * * * 1,5 /usr/bin/date >> /data/date.txt
#每周一至周五的凌晨3点运行
0 3 * * 1-5 /usr/bin/date >> /data/date.txt
#more /var/log/cron (查看cron日志)
#ls /var/spool/cron(用户的周期性计划任务目录)
crontab -l #查看现有任务
要注意命令的路径(which ls)
延时计划任务
#按小时计算,每小时检查一次
vim /etc/cron.d/0hourly
#按天、周、月
vim /etc/anacrontab
#进程锁
flock -xn "/tmp/f.lock" -c 执行的脚本(利用排他锁保证脚本只会运行一个)
/etc/cron.{daily,weekly,monthly} 目录中的脚本在当前的 Linux 中是被 anacron 调用的,不再依靠 cron 服务。不过,anacron 不用设置多余的配置,我们只需要把需要定时执行的脚本放入 /etc/cron.{daily,weekly,monthly} 目录中,就会每天、每周或每月执行,而且也不再需要启动 anacron 服务了。如果需要进行修改,则只需修改 /etc/anacrontab 配置文件即可。