:set ff 显示ff=fileformat不能执行 :set ff=unix nohup java -jar master_base-0.0.1_BASE.jar > log.file 2>&1 ps -ef|grep java|grep -v color|awk '{print $2}' | xargs kill -9 ---------------------------------------------------------------------- echo $# 【输出参数个数】 ./restart.sh sss2 sss sss 3 ---------------------------------------------------------------------- $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。一般情况下,大部分命令执行成功会返回 0,失败返回 1。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 ---------------------------------------------------------------------- ps axu | grep "httpd" | grep -v "grep" | wc -l (1)ps aux 显示系统全部进程,一行一个 (2)grep “abc” 从标准输入读取字符流,输出包含字符串“abc”的行 (3)grep -v "acb" 从标准输入读取字符流,输出不包含字符串“abc”的行 (4)wc -l 从标准输入读取字符流,输出行数 ############################################################################# currDate="`date +%Y%m%d%H%M%S`" cp /etc/vsftpd/vuser /etc/vsftpd/"$currDate"vuser ############################################################################# 【字符串】=左右不能加空格 name=xxx;取变量值的时候$name #获取输入并赋值给 NAME 变量,最后在 stdout 上输出 echo "What is your name?" read NAME echo "Hello, $NAME" #获取字符串长度 string="abcd" echo ${#string} #输出 4 #截取字符串 string="alibaba is a great company" echo ${string:1:4} #输出liba #查找子字符串 string="alibaba is a great company" echo `expr index "$string" is` #$ test='c:/windows/boot.ini' #$ echo ${test#/} c:/windows/boot.ini #$ echo ${test#*/} windows/boot.ini #$ echo ${test##*/} boot.ini #$ echo ${test%/*} c:/windows #$ echo ${test%%/*} c: ${变量名#substring正则表达式}从字符串开头开始配备substring,删除匹配上的表达式。 ${变量名%substring正则表达式}从字符串结尾开始配备substring,删除匹配上的表达式。 注意:${test##*/},${test%/*} 分别是得到文件名,或者目录地址最简单方法。 ---------------------------------------------------------------------------- 【日期】‘date +%Y/%m/%d %H:%M:%S‘ date -d next-day +%Y%m%d #明天日期 date -d tomorrow +%Y%m%d #明天日期 date -d last-day +%Y%m%d #昨天日期 date -d yesterday +%Y%m%d #昨天日期 date -d last-month +%Y%m #上个月日期 date -d next-month +%Y%m #下个月日期 date -d next-year +%Y #明年日期 #使用 next/last指令,您可以得到以后的星期几是哪一天: date -d 'next monday' (下周一的日期) date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d date -d last-day +%Y%m%d (昨天的日期) 或者:date -d yesterday +%Y%m%d date -d last-month +%Y%m(上个月是几月) date -d next-month +%Y%m(下个月是几月) #使用 ago 指令,您可以得到过去的日期: date -d ’30 days ago’ (30天前的日期) #可以使用负数以得到相反的日期: date -d ’dec 14 -2 weeks’ (相对:dec 14这个日期的两周前的日期) date -d ’-100 days’ (100天以前的日期) date -d ’50 days’(50天后的日期) date +%Y%m%d --date="+1 day" //显示后一天的日期 date +%Y%m%d --date="-1 day" //显示前一天的日期 date +%Y%m%d --date="-1 month" //显示上一月的日期 date +%Y%m%d --date="+1 month" //显示下一月的日期 date +%Y%m%d --date="-1 year" //显示前一年的日期 date +%Y%m%d --date="+1 year" //显示下一年的日期 ---------------------------------------------------------------------------- 【数组】 array_name=(value0 value1 value2 value3) array_name[0]=value0 array_name[1]=value1 array_name[2]=value2 取变量值的时候${array_name[index]} 使用@ 或 * 可以获取数组中的所有元素${array_name[*]}${array_name[@]} # 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]} ############################################################################# 【条件判断】 if[ "$dmin" = "" ]; then echo 1; elif[ $a -gt $b -o $a -lt $c ]; then #如果a>b或a2&&+$5>50{sub($5,"\033[31m"$5"\033[0m")}{system("echo \""$0"\"")}' #判断进程是否存在 ps -fe|grep java |grep -v grep if [ $? -ne 0 ] then echo "stop....." else echo "runing....." fi ############################################################################# #!/bin/sh #根据进程名杀死进程 if [ $# -lt 1 ] then echo "缺少参数:procedure_name" exit 1 fi PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'` for i in $PROCESS do echo "Kill the $1 process [ $i ]" kill -9 $i done ######################################################################## #!/bin/sh # eg: tomcat.sh start xxx # proc_dir="/usr/local/xxx/tomcat-zc-web/bin" proc_name=$2 if [ x$proc_name != x ] then proc_dir=${proc_dir//xxx/$proc_name} fi #echo $proc_dir function stop () { kill -9 `ps -ef |grep $proc_dir |grep -v grep|awk '{print $2}'` } function start () { cd $proc_dir ./startup.sh tail -300f /usr/local/$proc_name/log/catalina.out } case $1 in start) start;; stop) stop;; restart) stop start;; esac ######################################################################## #!/bin/bash echo "remove classes file!" #声明字符串 str="vgc-apon-business-trip-portlet,vgc-apon-e-leave-portlet" #分割字符串到数组 OLD_IFS="$IFS" IFS="," arr=($str) IFS="$OLD_IFS" for s in ${arr[@]} do rm -rf "$s"/docroot/WEB-INF/classes done sleep 1s git add . sleep 3s git commit -m "$1" sleep 1s git push origin master sleep 3s echo "remove all file!" rm -rf vgc-apon* sleep 1s echo "ok!"