Skip to content

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