shell脚本

linux下通过shell 命令执行 jar包,并关闭此jar的进程

萝らか妹 提交于 2019-12-12 17:08:17
一。启动的shell脚本,start.sh脚本: 1. 前台执行的脚本,会在当面窗口打印启动的日志 #!/bin/bash java -jar '/Users/sunww/Documents/Shell/gs-spring-boot-0.1.0.jar' 2. 后台执行的脚本,日志打印到文件中 #!/bin/bash nohup java -jar '/Users/sunww/Documents/Shell/gs-spring-boot-0.1.0.jar' 二. 关闭Jar(杀死进程) stop.sh脚本如下: #!/bin/bash PID=$(ps -ef | grep '/Users/sunww/Documents/Shell/gs-spring-boot-0.1.0.jar' | grep -v grep | awk '{ print $2 }') if [ -z "$PID" ] then echo Application is already stopped else echo kill $PID kill $PID fi 来源: CSDN 作者: 水桶前辈 链接: https://blog.csdn.net/robinson_911/article/details/103507495

shell脚本编程之变量的小用法

橙三吉。 提交于 2019-12-11 20:41:22
变量赋值 ${parameter:-word}:如果parameter为空或未定义,则变量展开为"word";否则,展开为parameter的值; ${parameter:+word}:如果parameter为空或未定义,不做任何操作;否则,展开为"word"值; ${parameter:=word}:如果parameter为空或未定义,则变量展开为"word",并将展开后的值赋值给parameter; ${parameter:?word}:如果parameter为空或未定义,则显示为错误,错误信息为"word"; ${parameter:2}:跳过parameter的前两个字符,取parameter后面的所有字符; ${parameter:2:3}:跳过parameter的前两个字符,从parameter的第三个字符开始往后取三个字符; 示例 [root@centos6 ~]# vim test.sh #!/bin/bash . /root/f1.txt TEST=${TEST:-'hello world'} #如果f1.txt中定义了TEST变量的值,就打印TEST值;如果f1.txt中未定义或TEST值为空,就打印后面的'hello world'; [ -n "$TEST" ] && echo "$TEST" 局部变量 local VAR_NAME function test

Shell 变量详解教程之位置变量与预定义变量

好久不见. 提交于 2019-12-11 12:44:52
Shell 变量分为3部分,分别是用户自定义变量、位置变量和预定义变量。 一. 自定义变量   那么,什么是变量呢?简单的说,就是让某一个特定字符串代表不固定的内容,用户定义的变量是最普通的Shell变量。y=3a+2b,就是把3a+2b这个值赋予y。变量名是以字母或下线符打头的,可以从第二位开始加入数字,并且大小写字母意义不同。如dir与Dir是不同的变量。变量名的长度不受限制。比如:expert=Bill,就是将Bill赋值给expert,后来脚本读取变量$expert时,会取值为Bill   注意!!! 在赋值语句中,赋值号“=”的两边不能有空格,否则在执行时会引起错误,这一点就没有python爽。如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。例如, names="abc dd ff" 变量可以使用数字、大小写字母、下划线,但是不能以数字开头。   可以将一个命令的执行结果赋值给变量。有两种形式的命令替换:一种是使用倒引号(esc下面的案件)引用命令,其一般形式是:`命令`。和$(命令)相同   例如:将当前工作目录的全路径名存放到变量dir中,输入以下命令行:   $ dir=`pwd`   另一种形式是:$(命令表)。上面的命令行也可以改写为:   $ dir=$(pwd) 交互变量   利用read命令可以从键盘上读取数据

Shell--数组

谁说胖子不能爱 提交于 2019-12-11 04:44:45
Shell数组 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由0开始。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: array_name = ( value1 .. . valuen ) 实例 #!/bin/bash my_array = ( A B "C" D ) 我们也可以使用下标来定义数组: array_name [ 0 ] = value0 array_name [ 1 ] = value1 array_name [ 2 ] = value2 读取数组 读取数组元素值的一般格式是: ${array_name[index]} 实例 #!/bin/bash my_array = ( A B "C" D ) echo "第一个元素为: ${my_array[0]} " echo "第二个元素为: ${my_array[1]} " echo "第三个元素为: ${my_array[2]} " echo "第四个元素为: ${my_array[3]} " 执行脚本,输出结果如下所示: $ chmod +x test.sh $ ./test.sh 第一个元素为: A 第二个元素为: B 第三个元素为: C 第四个元素为: D

数据仓库-shell脚本实现hive hdfs文件上传到目标ftp

主宰稳场 提交于 2019-12-11 04:14:29
总的来说就是一行一行的linux命令,组装起来就变成一个脚本了! #!/bin/bash cd /web/data/file/tmpjf rm -rf bm_jingfeng_export_zte_login_d_{Date_No}.txt rm -rf bm_jingfeng_export_cms_content_d_{Date_No}.txt rm -rf bm_jingfeng_export_channel_info_d_{Date_No}.txt rm -rf bm_jingfeng_export_stb_info_d_{Date_No}.txt #导出hdfs上面的文件到指定目录,date_no为批次 hadoop fs -getmerge hdfs://SH1/user/hive/warehouse/nginxlogdb.db/bm_jingfeng_export_zte_login_d/date_no={Date_No}/ /web/data/file/tmpjf/bm_jingfeng_export_zte_login_d_{Date_No}.txt hadoop fs -getmerge hdfs://SH1/user/hive/warehouse/nginxlogdb.db/bm_jingfeng_export_cms_content_d/date_no=

鸟哥的Linux私房菜:3、学习shell与shell script

只愿长相守 提交于 2019-12-11 02:43:49
第 9 章、vim 程序编辑器 Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑。 vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字。 vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速。 vi 有三种模式,一般指令模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换。 常用的按键有 i, [Esc],:wq 等。 vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式。 数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 列之意。 光标的移动中,大写的G经常使用,尤其是 1G, G 移动到文章的头/尾功能! vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来。 小数点「.」为重复进行前一次动作,也是经常使用的按键功能! 进入编辑模式几乎只要记住: i,o,R 三个按钮即可!尤其是新增一列的 o 与取代的 R。 vim 会主动的建立 swap 暂存档,所以不要随意断线! 如果在文章内有对齐的区块,可以使用 [ctr]-v 进行复制/贴上/删除的行为。 使用:sp 功能可以分区窗口。 若使用vim来撰写网页,若需要CSS元素数据,可透过 [crt]+x, [crt]+o 这两个连续组合按键来取得关 键词。

shell之for循环-while循环-break-continue-exit

廉价感情. 提交于 2019-12-10 16:40:59
for循环: 语法: for 变量名 in 条件 do command done #for循坏的条件集合,以空格作为分隔符,分割每一个条件。 例子: #!/bin/bash #求和1之100 sum=0 for in in `seq 1 100` do sum=$[$sum+$i] done echo $sum #!/bin/bash #查找/etc/目录下的目录,并长格式显示 cd /etc for i in `ls /etc/` do [ -d $i ] && ls -d $i done while循环: 语法: while 循环条件 do command done #当循环条件为 1或true或 “:”,表示死循环。 例子: #!/bin/bash #每30S监控系统负载,当大于10,发送邮件,假设邮件脚本在/usr/local/sbin/mail.py while true do load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d "." -f 1` [ $load -gt 10 ] && /usr/local/sbin/mail.py "load high" "$load" sleep 30 done #!/bin/bash #让用户输入数字,检测若没输入字符,提示用户输入;若用户输入非数字

shell中的break跳出循环、continue结束本次循环、exit退出脚本

孤街醉人 提交于 2019-12-10 16:24:23
break跳出循环 实例: #! /bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then break fi echo $i done echo aaaaaaaaa 输出执行结果: [root@test01 jiaoben]# sh -x break1.sh ++ seq 1 5 + for i in '`seq 1 5`' + echo 1 1 + '[' 1 == 3 ']' + echo 1 1 + for i in '`seq 1 5`' + echo 2 2 + '[' 2 == 3 ']' + echo 2 2 + for i in '`seq 1 5`' + echo 3 3 + '[' 3 == 3 ']' + break + echo aaaaaaa aaaaaaa 从输出结果可以看到,当判断条件成立后,break,循环到此结束,不会再给它赋值,跳出循环,但是没有退出脚本,break后面的脚本内容依然会执行。 continue结束本次循环 忽略continue之下的代码,直接进行下一次循环 #!/bin/bash for i in `seq 1 5` do echo $i if [ $i == 3 ] then continue fi echo $i:不等于3 done echo

Shell--流程控制

醉酒当歌 提交于 2019-12-10 14:22:57
Shell流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): < ?php if ( isset ( $_GET [ "q" ] )) { search ( q ) ; } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。 if else if if 语句语法格式: if condition then command1 command2 .. . commandN fi 写成一行(适用于终端命令提示符): if [ $( ps -ef | grep -c "ssh" ) -gt 1 ] ; then echo "true" ; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 .. . commandN else command fi == if else-if else== if else-if else 语法格式: if condition1 then command1 elif condition2 then command2 else commandN fi 以下实例判断两个变量是否相等: a = 10 b = 20 if [ $a

03Shell条件测试

℡╲_俬逩灬. 提交于 2019-12-10 10:45:33
条件测试 Shell 条件测试 格式 1: test 条件表达式 格式 2: [ 条件表达式 ] 格式 3: [[ 条件表达式 ]] 具体参数说明可以通过 man test 进行查看 文件测试 [ 操作符 文件或目录 ] [ -b FILE ] FILE存在而且是块设备文件,则为True [ -c FILE ] FILE存在而且是字符文件,则为True [ -d FILE ] FILE存在而且是目录,则为True [ -e FILE ] FILE存在,则为True [ -f FILE ] FILE存在而且是普通文件,则为True [ -g FILE ] FILE存在而且设置了SGID位,则为True [ -k FILE ] FILE存在而且设置了粘着位,则为True [ -L FILE ] FILE存在而且是符号链接文件,则为True -L 相当于 -h [ -p FILE ] FILE存在而且是管道文件,则为True [ -r FILE ] FILE存在而且【当前用户】对该文件有读权限,则为True [ -w FILE ] FILE存在而且【当前用户】对该文件有写权限,则为True [ -x FILE ] FILE存在而且【当前用户】对该文件有执行权限,则为True [ -u FILE ] FILE存在而且设置了SUID位,则为True [ FILE1 -nt FILE2 ]