linux脚本

shell脚本面试题

纵然是瞬间 提交于 2019-11-29 15:01:08
Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: ? 1 2 # chsh <username> -s <new_default_shell> # chsh linuxtechi -s /bin/sh Q:3 可以在shell脚本中使用哪些类型的变量? 答:在shell脚本,我们可以使用两种类型的变量: 系统定义变量 用户定义变量 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“ set ”命令查看。 用户变量由系统用户来生成和定义,变量的值可以通过命令“ echo $<变量名> ”查看。 Q:4 如何将标准输出和错误输出同时重定向到同一位置? 答:这里有两个方法来实现: 方法一: 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &> (# ls /usr/share/doc &> out.txt ) Q:5

Linux定时任务Crontab命令详解

。_饼干妹妹 提交于 2019-11-29 14:39:47
转:https://www.cnblogs.com/intval/p/5763929.html Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。 一、crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。 /etc/crontab文件包括下面几行: cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=HOME=/ # run-parts 51 * * * * root

定时任务之crontab命令

你。 提交于 2019-11-29 13:57:04
简介 crontab用于设置周期性被执行的命令 Linux系统中Linux调动工作分为两大类:   1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存   2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置 /etc/crtontab   系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序,通过命令cat crontab查看   这些任务会在系统运行起来自动调用 /var/spool/cron   每个用户都会生成自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下   执行命令crontab -r 就会删除当前用户的crontab文件。例如你切换到suifeng账号下,执行了该命令,那么/var/spool/cron/suifeng文件就会删除,如果要创建该文件只需要用crontab -e命令即可。   注意,普通用户一般没有权限访问/var/spool/cron /etc/crontab.deny文件与/etc/crontab.allow文件   1、分别表示不能使用crontab命令的用户、以及能够使用crontab命令的用户   2、两个文件同时存在crontab.allow文件优先   3

Linux下shell脚本启动jar包

怎甘沉沦 提交于 2019-11-29 12:37:30
Linux下shell脚本启动jar包 不说废话,直接上图。 这是整个目录结构。直接看脚本。 上面是完整的脚本代码,原理不多说,百度Google都可以。需要注意的地方是以下几点: 第4行的MAIN_CLASS="ls.gatetest.PressureTest"是你的启动函数所在的类(main函数) 第6行中的" CLASSPATH=.:./config ",这个是将你的配置文件路径告诉CLASSPATH,当然你可以随意修改后面的目录,这里默认放到了config下面;gatetest.jar是运行的主jar,当然可以在第7~9行做; 第7~9的for循环是依次加载并拼接jar包到 CLASSPATH 中,不建议修改; 第23行的start和第33行的stop是启动函数,看后面的启动命令就知道了; 启动命令:sh start.sh start; 停止命令: sh start.sh start; 重启命令: sh start.sh restart; 可以根据需要,自行向main传参,比如需要传递3个参数时,可以修改脚本如下: 来源: CSDN 作者: 梵寞三缘 链接: https://blog.csdn.net/qq_19585711/article/details/50184641

shell脚本学习

有些话、适合烂在心里 提交于 2019-11-29 12:24:03
基本语法 定义变量 name=”hhh” 变量名和等号之间不能有空格 使用一个定义过的变量 ${name} 数据类型 字符串 双引号、单引号都可以 双引号里可以出现转义字符 #string 获取字符串长度 反引号 反引号 是命令替换,命令替换是指Shell可以先执行 中的命令,将输出结果暂时保存,在适当的地方输出。语法: command (反引号是tab键的上一个按键) 重定向 ” >>” :如果文件不存在,将创建新的文件,并将数据送至此文件;如果文件存在,则将数据添加在文件后面 “>” :如果文件不存在,同上,如果文件存在,先将文件清空,然后将数据填入此文件 参数处理 一般,第一个和最后一个在实际中使用得比较频繁 awk详解 awk是Linux系统里的文本分析工具,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 内置变量表 $0 当前记录(作为单个变量) n 当前记录的第n个字段

Linux 脚本编写基础

蹲街弑〆低调 提交于 2019-11-29 12:23:51
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh   符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。   当编辑好脚本时,如果要执行该脚本,还必须使其可执行。   要使脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 1.1.2 注释   在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。 如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用 及工作原理。 1.1.3 变量   在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量 进行声明。要赋值给一个变量,您可以这样写: #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量a的内容: echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: num=2 echo "this is the $numnd" 这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,

1.shell脚本入门学习

家住魔仙堡 提交于 2019-11-29 12:23:37
一、shell入门介绍 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Linux 的 Shell 种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh) 本文介绍 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。 二、shell示例 打开文本编辑器,新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意。 #!/bin/bash echo "Hello World !" 解释: #!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。 echo 命令用于向窗口输出文本 三、shell脚本的运行 1.给文件添加可执行权限 chmod + x ./ test . sh #使脚本具有执行权限 注意,一定要写成 ./test.sh ,而不是 test.sh,linux 系统会去

Shell脚本之tomcat启动脚本解读

坚强是说给别人听的谎言 提交于 2019-11-29 12:23:27
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 可以在菜鸟教程进行学习 http://www.runoob.com/linux/linux-shell-basic-operators.html 基本思路:把现有的正在运行的tomcat停掉,解压war包,放到tomcat目录下,清缓存,再启动 两个所需脚本deploy.sh和restart.sh都放在tomcat/bin目录下 现在对启动脚本进行解析,演示发布启动tomcat,执行命令 bin/deploy.sh+要发布的war包 bin/deploy.sh (要发布的war包) 打包发布脚本deploy.sh脚本 #!/bin/sh war=$1 bin=$(cd `dirname $0`; pwd) if [ ! -n "${war}" ]; then echo "***Usage: $0 [project.war]" exit 0 fi if [ ! -f "${war}" ]; then echo "***Error: ${war} does not exist." exit 0 fi if [ ! "${war##*.}" = "war" ]; then

Shell脚本学习笔记

喜欢而已 提交于 2019-11-29 12:20:39
shell脚本 Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) Bash也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell 入门: 创建一个名字为Hello的shell脚本:vi Hello.sh (后缀名无所谓,sh是习惯) 运行shell脚本:sh 脚本名 变量: 创建 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:str="hello world!!" 使用变量需要在变量名钱加上$ 为了在开发中表示为变量的时候,会变成${str} 给变量二次赋值:str="" 不需要加上$和{} 创建只读变量:myUrl="http://www.google.com" readonly myUrl 如果尝试改变只读变量的话会报错 删除变量:unset variable_name 变量被删除后不能再次使用。unset 命令不能删除只读变量。 变量类型 运行shell时,会同时存在三种变量: 1)局部变量

30个经典shell脚本(中)

旧街凉风 提交于 2019-11-29 12:06:29
注:转自https://weibo.com/ttarticle/p/show?id=2309404415113397403767#_0(刘遄老师的Linux就该这样学) 11、iptables自动屏蔽访问网站频繁的IP 12、判断用户输入的是否为IP地址 13、判断用户输入的是否为数字 14、给定目录找出包含关键字的文件 15、监控目录,将新创建的文件名追加到日志中 16、给用户提供多个网卡选择 17、查看网卡实时流量 18、MySQL数据库备份 19、Nginx服务管理脚本 20、用户根据菜单选择要连接的Linux主机 11、iptables自动屏蔽访问网站频繁的IP 场景:恶意访问,安全防范 1)屏蔽每分钟访问超过200的IP 方法1:根据访问日志(Nginx为例) #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) ABNORMAL_IP=$(tail -n5000 access.log |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}') #先tail防止文件过大,读取慢,数字可调整每分钟最大的访问量。awk不能直接过滤日志,因为包含特殊字符。 for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP")