Linux 常用 Shell
文章目录
Banner
设置字体颜色
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
BOLD='\033[1m'
PLAIN='\033[0m'
设置提示
SUCCESS='[\033[32mOK\033[0m]'
COMPLETE='[\033[32mDONE\033[0m]'
WARN='[\033[33mWARN\033[0m]'
ERROR='[\033[31mERROR\033[0m]'
操作系统
SYSTEM_NAME=$(cat /etc/os-release | grep -E "^ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
if [ -s /etc/redhat-release ];then
SYSTEM_VERSION=RedHat
elif [ -s /etc/debian_version ];then
SYSTEM_VERSION=Debian
elif [ -s /etc/centos-release ];then
SYSTEM_VERSION=CentOS
fi
操作系统版本号
SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
系统处理器架构
ARCH=$(uname -m)
# 判定系统处理器架构
case ${ARCH} in
x86_64)
SYSTEM_ARCH="x86_64"
;;
aarch64)
SYSTEM_ARCH="ARM64"
;;
armv7l)
SYSTEM_ARCH="ARMv7"
;;
armv6l)
SYSTEM_ARCH="ARMv6"
;;
i386 | i686)
SYSTEM_ARCH="x86_32"
;;
*)
SYSTEM_ARCH=${ARCH}
;;
esac
关闭防火墙和SELinux
function CloseFirewall() {
if [[ $(systemctl is-active firewalld) == "active" ]]; then
CHOICE_C=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELinux ? [Y/n] ${PLAIN}")
read -p "${CHOICE_C}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy] | [Yy][Ee][Ss])
systemctl disable --now firewalld >/dev/null 2>&1
[ -s /etc/selinux/config ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config && setenforce 0 >/dev/null 2>&1
;;
[Nn] | [Nn][Oo]) ;;
*)
echo -e "\n$WARN 输入错误,默认不关闭!"
;;
esac
fi
}
系统操作
# 强制更新rpm包,忽略依赖
rpm -Uvh *.rpm --nodeps --force
# 创建数据库和导入初始化数据
mysql -uroot -pPassword -e "create database databasename;"
mysql -uroot -pPassword databasename < ./init/sql/ddl.sql
# 查询程序进程号并终止进程
kill -9 $(ps -ef | grep elasticsearch | grep -v "grep" | awk '{print $2}') >/dev/null 2>&1
tar -xzf xxxx.tar.gz -C /some_dir/
防火墙相关
#查看防火墙状态
systemctl status firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#开启防火墙
systemctl start firewalld.service
#!/bin/bash
## 计算传递进来的参数个数[$#]
## 获取脚本名称[$0]
## 检查之前的命令是否运行成功[$?]
## 获取文件的末行[tail -1 filename]
## 获取文件的首行[head -1 filename]
## 获取文件每一行的第n个元素[awk '{print $n}']
## 如果文件中每行第n个元素是param,则获取第m个元素[awk '{if($n == "param") print $m}']
## 强制拷贝[cp -rf]
##查看linux系统版本
cat /etc/issue
##连接mysql数据库
mysql -u USERNAME -p PASSWORD DATABASENAME <<EOF 2>/dev/null
show databases;
EOF
获取当前目录
baseDir=$(cd `dirname "$0"`;pwd)
判断文件是否存在
if [ ! -f $filename ]; then
exit 1
fi
判断目录是否存在
if [ ! -d $dir ]; then
mkdir -p $dir
fi
后台挂起静默执行
nohup $baseDir/start.sh $PARAM 2>&1 >> $LOGFILE &
判断之前的命令是否成功
if [ ! $? -eq 0 ]; then
exit 1
fi