free -m 看内存
scale=2 ;精度两个小数点
|tee -a h.txt既在屏幕输出又重定向 -a (append) 追加
判断目录文件夹或文件是否存在 [ -e]
[-d fengdeyong] directory文件夹判断是否
test -e ~.sh -s判断存在和是否非空
man test
[-f] file 判断是否为文件
退出循环 终止本次开始下一次Continue
结束 跳出循环Break
seq 5 sequence 从1-5
for循环
$@所有位置变量
集合 $(命令)
固定循环
通过位置变量传递 控制循环次数
id 查询用户存不存在
bash create_user.sh feng 5
创建5 个feng开头的用户名
&>/dev/null 重定向到空 方便不显示的时候
while循环
1.控制循环次数 高级用法
2,固定循环次数
whileread
命令|while read var1 var2 var3 read 后面接变量名
do
命令
done <filename <将文件里的内容导入到循环里面 注意第一行表头可以用if语句去除 变量尽量一一对应 没有对应的会合并到最后输出
cat grade.txt|while…效果一样
3. 死循环
Ctrl +c 强行结束
exit 退出整个脚本 后面的不执行
整个脚本有很多命令如果某条出错需要退出整个脚本使后面的命令不执行
如果有一百条都检查的话脚本很臃肿 但是可以实现
每个后面加if循环或者每个命令之间用&&连接只有前面的执行成功后面的才会进行
最好方法 ser -e 如果出错 里面停止执行
-n(nonzero) $..判读是否空 --z
|wc -L统计字符数 length wc 是统计工具 2 10 158 意思是2行10个单词 158 个字节
${#sg} 也可以
id feng 判断用户feng 是否存在
5.5
- case 多分支
- #!/bin/bash
- case $1 in
- start)
- echo "service is start"
- mkdir feng$RANDOM
- ;;
- stop)
- echo "service is stop"
- ;;
- restart|reload)
- echo "service is restart|reload"
- ;;
- *)
- echo "usage: $0 start|stop|restart|reload"
- esac
整数的比较 --》(($1 >=90 )) && (( $1 <= 100 ))
&&
(( $1 >=90 && $1 <= 100 ))
if 条件1 ;then
命令1
elif 条件2 ;then
命令2
elif 条件3 ;then
命令3
elif 条件4 ;then
命令4
else
命令5
fi
- >&2 错误的重定向输出
- exit 1 (1是返回值 范围是1-255)
basename 得到绝对路径的文件名
dirname 获得绝对路径的目录
#定义一个函数sum
sum() {
total=$(( $1 + $2))
echo "$1 + $2 = $total"
return 0
}
#调用
sum 50 60
脚本外面的位置变量如何传递到函数里?
[root@localhost shell]# cat f2.sh
#!/bin/bash
#定义一个函数sum
num1=$1
num2=$2
sum() {
total=$(( $num1 + $num2))
echo "$num1 + $num2 = $total"
return 0
}
#调用
sum
[root@localhost shell]# bash f2.sh 60 70
60 + 70 = 130
shell 编程里面变量是全局变量 可以互相调用 A函数可以调用B函数里面的变量
在变量前面加local可以变成局部变量
cd /etc/init.d vim functions里面定义了function 里面很多函数
python/java调用库 import c语言是include
shell脚本在执行的时候的4种方式
在当前bash进程里启用一个子进程去执行脚本f1.sh
1. bash f1.sh
2. ./f1.sh 需要脚本文件f1.sh具有可执行权限(相对路径执行)
在当前bash进程里执行脚本f1.sh(父进程)
3. . f1.sh
4. source f1.sh
[root@localhost shell]# bash f1.sh
50 + 60 = 110
[root@localhost shell]# ./f1.sh 相对路径执行
-bash: ./f1.sh: 权限不够
[root@localhost shell]# . f1.sh
50 + 60 = 110
[root@localhost shell]# source f1.sh
50 + 60 = 110
[root@localhost shell]#
[root@localhost shell]# /shell/f1.sh 绝对路径执行
-bash: /shell/f1.sh: 权限不够
[root@localhost shell]#
export sg meinv 输出这两个变量转换为全局变量 这
[root@localhost shell]# chmod +x f1.sh 授予f1.sh 可执行权限 execute
[root@localhost shell]# ./f1.sh
50 + 60 = 110
[root@localhost shell]# /shell/f1.sh
50 + 60 = 110
[root@localhost shell]# ll
总用量 44
-rw-r--r--. 1 root root 63 4月 19 16:57 app.log
-rw-r--r-- 1 root root 227 5月 9 15:26 case.sh
-rw-r--r--. 1 root root 91 4月 19 17:01 cpu_usage.log
-rwxr-xr-x 1 root root 124 5月 9 16:09 f1.sh
-rw-r--r-- 1 root root 195 5月 9 16:19 f2.sh
drwxr-xr-x 2 root root 6 5月 9 15:26 feng28595
-rw-r--r--. 1 root root 693 4月 19 17:01 monitor_cpu_disk.py
-rw-r--r--. 1 root root 471 4月 19 16:30 monitor_cpu_disk.sh
-rw-r--r--. 1 root root 467 4月 19 17:04 monitor_disk.py
-rw-r--r--. 1 root root 239 4月 19 17:11 monitor_disk.sh
-rwxr-xr-x 1 root root 3245 5月 9 15:28 service
-rw-r--r--. 1 root root 42 4月 19 16:28 test.sh
https://nginx.org/download/nginx-1.24.0.tar.gz
解压缩 tar xf nginx-1.24.0.tar.gz
cd nginx-1.24.0进入解压后的文件夹
lscpu 查看cpu核心
cd /usr/local/nginx1/html/ 进入存放网页的目录
ls
index.html 首页文件 进入网站第一个看到的页面
在vim 脚本里面加上<meta charset=”UTF-8”> 让网页里面可以用中文
卸载脚本
[root@localhost shell]# vim uninstall_nginx.sh
[root@localhost shell]# cat uninstall_nginx.sh
#!/bin/bash
#停止运行的nginx
/usr/local/nginx1/sbin/nginx -s stop
#删除安装目录
rm -rf /usr/local/nginx1
#清除开机启动nginx
sed -i '/nginx1/ s/^/#/' /etc/rc.local
#删除用户
userdel -r liujinming
[root@localhost shell]# bash uninstall_nginx.sh 执行脚本
安装的脚本
[root@localhost shell]# vim onekey_install_nginx.sh
[root@localhost shell]# cat onekey_install_nginx.sh
#!/bin/bash
#解决软件的依赖关系
yum install pcre-devel gcc openssl-devel -y
#下载nginx源码包
mkdir -p /nginx
cd /nginx
curl(网站) -O(直接下载) https://nginx.org/download/nginx-1.24.0.tar.gz
#解压压缩包
tar xf nginx-1.24.0.tar.gz
#进入解压后的文件夹
cd nginx-1.24.0
#编译前的配置
./configure(软件提供 在里面选参数) --prefix=/usr/local/nginx1 --user=liujinming --group=liujinming --with-http_ssl_module --with-http_v2_module --with-http_sub_module
#编译,将c语言的代码编译成二进制程序
make -j 2(开两个进程 建议开启个数和cpu一样)当你有一个多核 CPU 时,每个核心都可以独立地运行一个任务。如果 make
只运行一个任务,那么其他核心将处于空闲状态,这浪费了计算资源。通过增加 -j
的值,你可以让 make
同时运行多个任务,从而更充分地利用 CPU 的所有核心。
#编译安装,将编译好的二进制程序复制到我们指定的安装路径下/usr/local/nginx1
make install
#运行nginx
useradd liujinming
/usr/local/nginx1/sbin/nginx
#开机启动,系统在开机的时候会自动去执行rc.local文件里面的命令
chmod +x /etc/rc.d/rc.local
echo "/usr/local/nginx1/sbin/nginx" >>/etc/rc.local
#关闭防火墙服务
service firewalld stop
#设置防火墙服务开机不启动
systemctl disable firewalld
[root@localhost shell]# bash onekey_install_nginx.sh 执行脚本