-
Notifications
You must be signed in to change notification settings - Fork 0
/
if.sh
106 lines (94 loc) · 3.13 KB
/
if.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/bash
## if 2016-07-21
## http://www.aqzt.com
##email: [email protected]
##robert yu
##centos 6和centos 7
#–b 当file存在并且是块文件时返回真
#-c 当file存在并且是字符文件时返回真
#-d 当pathname存在并且是一个目录时返回真
#-e 当pathname指定的文件或目录存在时返回真
#-f 当file存在并且是正规文件时返回真
#-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
#-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
#-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
#-p 当file存在并且是命令管道时返回为真
#-r 当由pathname指定的文件或目录存在并且可读时返回为真
#-s 当file存在文件大小大于0时返回真
#-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
#-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
#-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
#Bash Shell 里面比较字符写法:
#-eq 等于
#-ne 不等于
#-gt 大于
#-lt 小于
#-le 小于等于
#-ge 大于等于
#-z 空串
#= 两个字符相等
#!= 两个字符不等
#-n 非空串
if [ $b -gt 0 -o $c -gt 0 -a $a -gt 0 ]; then
echo test
fi
#对shell中的关系运算符说明如下:
#-gt 表示greater than,大于
#-lt 表示less than,小于
#-eq 表示 equal,等于
#对shell中的连接符说明如下:
#-a 表示 and,且
#-o 表示 or,或
#也可以写成这样:
if [ $b -gt 0 ] || [ $c -gt 0 ] && [ $a -gt 0 ]; then
echo test
fi
#其中,&&表示and,||表示or
#文件表达式
if [ -f file ] #如果文件存在
if [ -d ... ] #如果目录存在
if [ -s file ] #如果文件存在且非空
if [ -r file ] #如果文件存在且可读
if [ -w file ] #如果文件存在且可写
if [ -x file ] #如果文件存在且可执行
#整数变量表达式
if [ int1 -eq int2 ] #如果int1等于int2
if [ int1 -ne int2 ] #如果不等于
if [ int1 -ge int2 ] # 如果>=
if [ int1 -gt int2 ] # 如果>
if [ int1 -le int2 ] # 如果<=
if [ int1 -lt int2 ] # 如果<
if [ "$check" == "" ];then
echo ${line}
else
echo 111
fi
##注释多行方法
if false; then
echo "ni"
echo "ni"
echo "ni"
fi
##判断进程是否运行,运行就KILL掉,注意grep -v sh| grep -v grep
var=`ps -aef | grep $1 | grep -v sh| grep -v grep| awk '{print $2}'`
if [ !-z "$var"]
then
echo $1 process is not running
else
kill -9 $var
echo $1 process killed forcefully, process id $var.
fi
#查看指定进程是否存在
#在获取到 pid 之后,还可以根据 pid 查看对应的进程是否存在(运行),这个方法也可以用于 kill 指定的进程。
if ps -p $PID > /dev/null
then
echo "$PID is running"
# Do something knowing the pid exists, i.e. the process with $PID is running
fi
#查pid循环KILL
pids=( $(pgrep -f resque) )
for pid in "${pids[@]}"; do
if [[ $pid != $$ ]]; then
kill "$pid"
fi
done