Shell编程
案例
批量创建有规律文件
需求:mkdocs文档涉及到多文件创建
$ ll | awk '{print $NF}'
1.1.md
1.2.md
1.3.md
1.4.md
2.1.md
2.2.md
2.3.md
3.1.md
3.2.md
// 使用如下命令,其他目录等同理
touch 1.{1..9}.md
// 查看效果
# touch 1.{1..3}.md
# tree
.
├── 1.1.md
├── 1.2.md
└── 1.3.md
0 directories, 3 files
# ls
1.1.md 1.2.md 1.3.md
数据库备份脚本
需求:对数据库备份并保留指定天数;如需异地,可通过增加推或者拉的方式进行备份。
# crontab -l
0 2 * * * /home/backup/Mysql/mysqldump.sh
# cat /home/backup/Mysql/mysqldump.sh
#! /bin/sh
mysqldump -udevops -pdevopsR#xxx -h10.50.20.xxx --databases devopsbase > /home/backup/Mysql/devopsbase-`date +%Y-%m-%d`.sql
mysqldump -udevops -pdevopsR#xxx -h10.50.20.xxx --databases devops > /home/backup/Mysql/devops-`date +%Y-%m-%d`.sql
find /home/backup/Mysql/ -mtime +4 -name "*.sql" -exec rm -rf {} \;
去注释查看
需求:去掉官网配置文件的注释行和空行
# cat values.yaml | more
## The global properties are used to configure multiple charts at once.
## https://docs.gitlab.com/charts/charts/globals
global:
common:
labels: {}
image: {}
# Registry value override is only available for the following Charts:
# - Spamcheck
# - Mailroom
# cat values.yaml | grep -v '^\s*#' | grep -v '^$' | more
global:
common:
labels: {}
image: {}
jenkins启停脚本
# cat /usr/local/bin/jenkins.sh
#!/bin/bash
### jenkins.war包java -jar启停脚本
### 此Jenkins版本为2.440.2需要jdk版本11、17、21或以上
export JENKINS_PATH=/opt/jenkins.war
export JENKINS_PORT=8088
export JENKINS_LOG=/var/log/jenkins.log
export JENKINS_HOME=/data/jenkins/data/
pid=0
if [ "$1" = "start" ];then
if [ $pid -gt 0 ];then
echo 'jenkins is running...'
else
# 启动jenkins.war
nohup java -jar -Xms4096m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m ${JENKINS_PATH} --httpPort=${JENKINS_PORT} &> ${JENKINS_LOG} &
fi
elif [ "$1" = "stop" ];then
exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
echo 'jenkins is stop..'
else
echo "Please input like this:"jenkins.sh start" or "jenkins stop""
fi