首页 > 系统服务 > 详细

shell-函数篇

时间:2020-07-12 09:40:56      阅读:43      评论:0      收藏:0      [点我收藏+]

shell 脚本的函数

 

#!/usr/bin/env bash

function cpu_load() {

echo " cpu 负载监控"
}


function main() {
cpu_load
}

main


LAB1:监控nginx服务,挂了就重启
#!/bin/bash
#
# 获取脚本子进程的pid,如果脚本名称中带nginx,也会当成nginx进程
this_pid=$$
 
while true
do
ps -ef | grep nginx | grep -v grep | grep -v $this_pid &> /dev/null
 
 
if [ $? -eq 0 ];then
    echo "Nginx is running well"
    sleep 5
else
    systemctl start nginx
    echo "Nginx is down,Start it..."
fi
done

 

系统下后台运行

nohup sh nginx_daemon.sh &

#查看日志
tailf nohup.out

 

函数返回值

返回值有两种方式:

  • return
  • echo

技术分享图片

 

 

 技术分享图片

 

 

 

LAB1:判断nginx进程是否存在

  • 函数使用return返回值,通常只是用来供其他地方调用获取状态,因此通常仅返回0或1;0表示成功,1表示失败

nginx.sh

 1 #!/bin/bash
 2 
3
4 this_pid=$$ 5 6 function is_nginx_running 7 { 8 ps -ef | grep nginx | grep -v grep | grep -v $this_pid &> /dev/null 9 if [ $? -eq 0 ];then 10 return 0 11 else 12 return 1 13 fi 14 } 15 16 is_nginx_running && echo "nginx is running" || echo "nginx is stopped"

查看脚本进程的执行过程

bash -x nginx.sh

技术分享图片

 

 

案例2  获取系统中的用户

  • 使用echo返回值 使用echo可以返回任何字符串结果 通常用于返回数据,比如一个字符串值或者列表值

get_sys_user.sh

 1 #!/bin/bash
 2  
 3 # 获取系统所有的用户名
 4 function get_users
 5 {
 6     users=`cat /etc/passwd | cut -d: -f1`
 7     echo $users
 8 }
 9  
10 # 定义一个变量将获取用户列表赋值给这个变量
11 user_list=`get_users`
12  
13 index=1
14 for u in $user_list
15 do
16     echo "the $index user is : $u"
17     index=$(($index+1))
18 done

 

执行脚本,输出如下

技术分享图片

 

 

注:

return 常用来返回 0 and 1 用于其他函数或变量调用

echo  常用与输出

shell-函数篇

原文:https://www.cnblogs.com/leading-net/p/13286993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!