linux脚本

运行shell脚本的三种方式

試著忘記壹切 提交于 2020-02-14 10:18:12
先来看一个简单的shell脚本: #!/bin/sh cd /tmp echo "hello,world!"   我们来挨个解释一下脚本的每一行:   第一行:#!后面跟的是解释器的路径(shell本身就是一种解释型语言),解释器的路径是/bin/sh;   第二行:cd命令是切换当前工作目录的命令,tep是linux下根目录的一个子目录;   第三行:echo命令是输出后面所跟的参数   三种执行方法:   第一种:因为shell程序写完之后并没有执行权限,所以该脚本想要执行可以使用chmod命令赋予该脚本可执行的权限,然后再执行。 [root@localhost shell]# chmod +x echo.sh [root@localhost shell]# ./echo,sh bash: ./echo,sh: 没有那个文件或目录 [root@localhost shell]# ./echo.sh hello,world! [root@localhost shell]# pwd /root/shell [root@localhost shell]#   第二种:调用解释器使得脚本执行,例如:bash、csh、csh、ash、bsh、ksh等等; [root@localhost shell]# sh echo.sh hello,world! [root@localhost

Shell中的参数(位置和特殊)

牧云@^-^@ 提交于 2020-02-12 23:11:33
我们先来说一下 Shell 位置参数是怎么回事。 运行 Shell 脚本文件时我们可以给它传递一些参数,这些参数在脚本文件内部可以使用$n的形式来接收,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 同样,在调用函数时也可以传递参数。Shell 函数参数的传递和其它编程语言不同,没有所谓的形参和实参,在定义函数时也不用指明参数的名字和数目。换句话说,定义 Shell 函数时不能带参数,但是在调用函数时却可以传递参数,这些传递进来的参数,在函数内部就也使用$n的形式接收,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推 这种通过$n的形式来接收的参数,在 Shell 中称为位置参数 在讲解变量的命名时,我们提到:变量的名字必须以字母或者下划线开头,不能以数字开头;但是位置参数却偏偏是数字,这和变量的命名规则是相悖的,所以我们将它们视为“特殊变量” 除了 $n,Shell 中还有 $#、$*、$@、$?、$$ 几个特殊参数, 我们将在下节讲解 1) 给脚本文件传递位置参数 [root@server1 mnt]# sh test.sh http://www.baidu.com Language: http://www.baidu.com URL: [root@server1 mnt]# sh test.sh http://www.baidu.com http:/

linux后台执行./run.py提示python syntax error near unexpected token `('

旧时模样 提交于 2020-02-12 04:14:08
python脚本中的#!/usr/bin/python 估计有不少人注意过一些python脚本开头有这么行东东: #!/usr/bin/python 它是用来干嘛的?貌似没有它对脚本功能也没啥影响。它是用来指定用什么解释器运行脚本以及解释器所在的位置。 以test.py为例,脚本内容如下: def test(): print 'hello, world' if __name__ == "__main__": test() 运行脚本: python test.py 输出: hello, world 换一种方法运行: ./test.py 会提示出错,文件无可执行权限: -bash: ./test.py: Permission denied 将文件设为可执行: chmod +x test.py 继续运行: ./test.py 提示: ./test.py: line 1: syntax error near unexpected token `(' ./test.py: line 1: `def test():' 那是因为系统默认该脚本是shell脚本,把它当shell语句执行,当然失败了。 在前面加上 #!/usr/bin/python 申明l这是个python脚本,要用python解释器来运行: ./test.py 输出: hello, world 这个东东常用在cgi脚本中

Linux运维处理及监控脚本

假装没事ソ 提交于 2020-02-11 12:46:06
分享场景一:运维过程通过脚本批量删除文件。 #!/bin/sh cd /tmp time=’date – d “ 2 day ago” “+%b%d” ls –l | grep “ppxx” | grep “$ time” | awk ‘ { print $NF } ’ | xargs rm –rf 通过自动操作以上脚本把tmp目录下 ppxx开头的临时文件进行自动清理。 分享场景二:运维监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告给运维人员 #!/bin/bash #monitor available disk space SPACE='df | sed - n '/ \ / $ / p' | gawk ' { print $5 } ' | sed's/%//' if [ $SPACE - ge 90 ] then administrator@center.com fi 该脚本通过对$SPACE -ge 90分析判断目前硬盘空间是否超过90%,在超过阀值时,向运维管理员邮箱administrator@center.com 发邮件并告知。 分享场景三:监控主机网卡流量 #!/bin/bash #network #Mike.Xu while : ; do speedtime='date +%m" - "%d" "%k" : "%M' speedday='date

使用sh-x调试shell脚本_转

混江龙づ霸主 提交于 2020-02-11 05:12:10
参考:http://blog.chinaunix.net/uid-20564848-id-73502.html 1. 通过sh -x 脚本名 #显示脚本执行过程 2.脚本里set -x选项,轻松跟踪调试shell脚本 [以下字段转自:http://linux.chinaitlab.com/SHELL/727128_4.html] "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。 shell的执行选项除了可以在启动shell时指定外,亦可在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令,如以下脚本片段所示: set -x    #启动"-x"选项 要跟踪的程序段 set +x     #关闭"-x"选项 set命令同样可以使用上一节中介绍的调试钩子—DEBUG函数来调用,这样可以避免脚本交付使用时删除这些调试语句的麻烦

利用shell脚本提高效率(切换用户不需要输入密码)

强颜欢笑 提交于 2020-02-11 05:04:40
一、简便切换用户: 切换用户,每次输入密码,比较麻烦,可以使用脚本交互式登录实现,每次只要输入./su_ 并tab,执行此脚本,即可切换至root用户,比较简单。如下: hao@hao-ubuntu:~$ cat su_root.sh #!/usr/bin/expect set timeout 3 spawn su expect "Password:" exec sleep 1 send "root\r" expect "#" interact hao@hao-ubuntu:~$ ./su_root.sh spawn su Password: root@hao-ubuntu:/home/hao# 当然也可以增加一些if判断之类,让其他用户切换也不必输入密码。具体根据个人喜欢自己修改完善。 二、交互式登录: 通过expect,实现交互式登录,且看如下脚本: hao@hao-ubuntu:~$ cat login.sh #!/usr/bin/expect -f set ipaddr "192.168.77.58" set passwd "hao" spawn ssh hao@$ipaddr #spawn 意思是执行命令,expect内命令,shell中不存在 expect { "yes/no" { send "yes\r"; exp_continue} "password:" {

shell脚本的调试技巧

*爱你&永不变心* 提交于 2020-02-11 03:55:00
参考文档 请参考文章: http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/index.html http://blog.csdn.net/baobeijianjia/article/details/4353560 http://blog.csdn.net/wklken/article/details/6991581 Linux笔记——shell补充:参数传递&函数等 读后的感觉,还是用shell的选项灵活,方便。 trap方式在捕捉ERR信号的时候比较方便。 shell的执行选项 -n: 只是读取脚本,但不执行命令。用于在执行脚本前确认脚本中是否存在语法错误。 -c: 选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令 。当需要临时测试一小段脚本的执行结果时,可以使用这个选项。 -x:选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。 shell的执行选项除了可以在启动shell时指定外

shell脚本的调试技巧

五迷三道 提交于 2020-02-11 03:47:15
请参考文章:http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/index.html 读后的感觉,还是用shell的选项灵活,方便。 trap方式在捕捉ERR信号的时候比较方便。 shell的执行选项 -n: 只是读取脚本,但不执行命令。用于在执行脚本前确认脚本中是否存在语法错误。 -c:选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项。 -x:选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。 shell的执行选项除了可以在启动shell时指定外,亦可在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令 现在让我们来总结一下调试shell脚本的过程: 首先使用“-n”选项检查语法错误,然后使用“

ubuntu-18.04 设置开机启动脚本

烈酒焚心 提交于 2020-02-08 17:06:57
ubuntu-16.10 开始不再使用initd管理系统,改用systemd 执行 ls /lib/systemd/system 你可以看到有很多启动脚本,其中就有我们需要的 rc.local.service # SPDX - License - Identifier : LGPL - 2.1 + # # This file is part of systemd . # # systemd is free software ; you can redistribute it and / or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation ; either version 2.1 of the License , or # ( at your option ) any later version . # This unit gets pulled automatically into multi - user . target by # systemd - rc - local - generator if / etc / rc . local is executable . [ Unit ]

linux nginx访问限制ip 脚本

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-08 13:34:47
for ((i=1;i<=10;i++)); do list_num = $(sed -n $i'p' /tmp/ip.txt |awk '{print $1}') list_ip = $(sed -n $i'p' /tmp/ip.txt |awk '{print $2}') if [ $list_num -gt 1000 ];then echo deny $list_ip';' >> /test/nginx_deny_ip.conf fi donenginx -s reload    来源: https://www.cnblogs.com/kuku0223/p/12276034.html