0%

linux 命令

Linux 相关操作

查看系统信息

1
2
3
4
5
6
cat /proc/version 查看系统版本
uname -a
cat /proc/cpuinfo
cat /etc/redhat-release
getconf -a 查看系统所有变量
getconf LONG_BIT 查看系统位数
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
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务程序
# rpm -qa # 查看所有安装的软件包
iostat 显示存储细节
cat /proc/meminfo 显示内存使用
mpstat -P ALL 显示每个CPU状态
pmap 显示进程占用内存量
pstree -p 显示进程父子关系

16 个 Linux 服务器监控命令
https://roclinux.cn/?p=2549

tail

1
tail -f catalina.out|grep --color -B 20 'com.ync365.seed.service.user.impl'

关闭 selinux

打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled

1
vi /etc/selinux/config

epel 源

https://dl.fedoraproject.org/pub/epel/6/x86_64/

1
rpm -ivh https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

pushd popd 切换目录

让切换目录更方便: pushd,popd,dirs,cd -

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
一,为何要使用这几个命令?
可能大家会有疑问,为何要使用这几个命令,
难道用cd不就可以切换目录了吗?
没错,使用cd就可以切换到需要访问的目录,
但是有时会是一个路径很长,层次很多的目录,进到此目录下后,这时我们不小心运行了 cd命令,
理所当然,我们回到了自己的home目录,这时如果想回去怎么办?

还有:因为工作的需要,我们需要不停在几个很深层的目录之间切换,不止一个,
那么即使有tab键帮忙,我们也会因为一个cd命令花费很多时间,如何在多个目录之间切换时能更方便些
pushd,popd是我们的好帮手

说明: pushd,popd,dirs这几个我们讲到的命令是bash内建的命令,
所以只要登录到了bash,这几个命令就可以使用了

二,如何在两个目录之间切换?
如果只是在两个目录之间切换,那么还不必使用pushd,
这时只需使用 cd -就可以了

cd -的作用是可以回到前一个目录,
看例子:

[root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/
[root@localhost pics]# cd -
/root
[root@localhost ~]# cd -
/usr/share/kde4/apps/kget/pics
[root@localhost pics]#

怎么样?在两个目录之间切换非常方便,无需再输入很长的路径

说明:
为何cd -能够回到前一个目录?
这是因为 -在此处等同于 $OLDPWD变量,
此问题可以参见bash的info信息,
cd 一项有相关的说明: An argument of - is equivalent to $OLDPWD.
$OLDPWD变量就是bash所记录的前一个目录
也就是说:$OLDPWD和-相等

下面我们再看一个例子:
[root@localhost ~]# cd /usr/share/kde4/apps/kget/pics/
[root@localhost pics]# echo $OLDPWD;
/root
[root@localhost pics]# cd $OLDPWD
[root@localhost ~]# echo $OLDPWD;
/usr/share/kde4/apps/kget/pics
[root@localhost ~]# cd $OLDPWD;
[root@localhost pics]# echo $OLDPWD;
/root

我们可以得到结构: 用cd -和cd $OLDPWD都可以在最近所操作的两个目录之间进行切换

三,如何在多个目录之间切换?
因为 cd -和 cd $OLDPWD都是只支持最近操作的两个目录,所以要在多个目录之间操作时,
我们需要使用 pushd

1,
先来介绍我们会用到的3条命令

pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中
如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换

popd: 弹出堆栈中最近的目录
dirs: 列出当前堆栈中保存的目录列表


看例子:
[root@localhost ~]# pushd /usr/local/sbin/
/usr/local/sbin ~
[root@localhost sbin]# dirs
/usr/local/sbin ~
[root@localhost sbin]# dirs -p -v
0 /usr/local/sbin
1 ~
[root@localhost sbin]# pushd /usr/share/kde4/apps/kget/
/usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost kget]# dirs -p -v
0 /usr/share/kde4/apps/kget
1 /usr/local/sbin
2 ~


说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表
-v参数可以在目录前加上编号
注意:有 -v时,不添加 -p也可以每行一个目录的形式显示
说明之二:我们可以看到:最近压入堆栈的目录位于最上面

2,如何在最近的两个目录之间切换?

在最近的两个目录之间切换:用pushd不加参数即可

[root@localhost kget]# pushd /boot/grub/
/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
[root@localhost grub]# pushd
/usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~
[root@localhost kget]# dirs -v
0 /usr/share/kde4/apps/kget
1 /boot/grub
2 /usr/local/sbin
3 ~
[root@localhost kget]# pushd
/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,
当前目录总是位于堆栈的最上面

3,如何在多个目录之间切换?

用 pushd +n即可
说明:
n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部
需要注意: 堆栈从第0个开始数起

看例子:

[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
[root@localhost grub]# pushd +2
/usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost sbin]# dirs -v
0 /usr/local/sbin
1 ~
2 /boot/grub
3 /usr/share/kde4/apps/kget

4,如何把目录从堆栈中删除?
用popd即可

看例子:
[root@localhost sbin]# dirs -v
0 /usr/local/sbin
1 ~
2 /boot/grub
3 /usr/share/kde4/apps/kget
[root@localhost sbin]# popd
~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget
[root@localhost ~]# popd +1
~ /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /usr/share/kde4/apps/kget

说明:可以看到popd不加参数的运行情况:
popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录
说明之二: popd 加有参数 +n时,
n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除


四,多学一点知识

1,pushd和popd都可以只影响堆栈而不切换目录
用 -n参数即可
看例子:
[root@localhost ~]# dirs -v
0 ~
1 /usr/share/kde4/apps/kget
[root@localhost ~]# pushd -n /boot/grub
~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget

2, dirs可以清空目录堆栈
用 -c参数即可

看例子:
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -c
[root@localhost ~]# dirs -v
0 ~

说明: 位于堆栈顶部的目录是当前目录,它不能被pop出去的

cp 实现强行覆盖

alias

1
2
3
4
5
6
7
8
9
[root@localhost storage]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost storage]#

方法一

unaslias cp(这只是临时取消 cp 的别名,不是永久的)

1
[root@localhost ~]#unaslias cp

方法二

输入\cp 命令,作用也是取消 cp 的别名。

1
[root@localhost ~]#\cp -fr src dest

方法三

输入yes|cp -fr src dest,使用管道自动输入 yes。

1
[root@localhost ~]#yes | cp cp -fr src dest

让管道自动输入一大堆得 yes,就可以完成了强行复制了。
那有人会问 dos 的 copy 命令怎么实现强行复制的呢?答案是
用来 xcopy /y src dest 来实现强行复制。

pkill 命令

来自: https://man.linuxde.net/pkill

pkill 命令可以按照进程名杀死进程。pkill 和 killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用 kill 来杀掉。

语法

1
pkill(选项)(参数)

选项

1
2
3
4
5
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端。

参数

进程名称:指定要查找的进程名称,同时也支持类似 grep 指令中的匹配模式。

实例

1
2
3
4
pgrep -l gaim
2979 gaim

pkill gaim

也就是说:kill 对应的是 PID,pkill 对应的是 command。

nohup

nohup 的用途就是让提交的命令忽略 hangup 信号。

在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上”&”来将命令同时放入后台运行,也可用”>filename 2>&1”来更改缺省的重定向文件名。

nohup 示例

1
2
3
4
5
6
7
[root@xx ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@xx ~]#

时间设置

linux 时间快 8 小时解决办法

要解决这个问题,首先要确认当前 CMOS 显示的时间是否是当前的时间,如果是则你的 CMOS 是非 UTC 时间(即 CST 当地时间),要修改/etc/sysconfig/clock文件,将里面的 UTC=true 改为 UTC=false (告诉 Linux 硬件设置的是当地时间)

这个是多数快 8 小时的原因,因为安装 Linux 时默认选项是使用 UTC 时间(可能国外电脑的 CMOS 都是设置的 UTC 时间),系统误认为你的 CMOS 是 UTC 时间,而你又选择了+ 8 的时区,所以 Linux 在 CMOS 时间上加了 8 小时作为系统的时间

更改时区

1
2
3
rm /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

读取硬件时间到系统

1
clock --hctosys

输入 Date 查看当前是否为 CST 时间(CST 表示当地时间,如我们设置的 Shanghai ),如果时间不正确用以下方式修改时间

1
date -s 2010-02-03 12:00:00

将系统时间写入硬件

1
clock --systohc

ntp 安装

1
yum install -y ntp

设置 ntp 服务器

1
vim /etc/ntp.conf
1
2
3
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

启动 ntp 服务

1
service ntpd start

设置客户端

1
vim /etc/ntp.conf
1
2
3
4
5
6
7
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.100.10

设置 ntpd 随机启动

1
2
chkconfig ntpd on
chkconfig ntpd --list

检查 ntp 状态

1
2
3
4
5
6
ntpstat
[root@localhost ~]# ntpstat
synchronised to NTP server (192.168.100.10) at stratum 4
time correct to within 7968 ms
polling server every 64 s
[root@localhost ~]#
1
watch ntpq -p

ifconfig

centos mini 安装桌面环境

https://cnzhx.net/blog/centos-yum-install-desktop/

netstat

1
netstat -rn 路由表

查看文件占用

1
2
du -sh 文件大小
df 磁盘信息

查看内存使用

1
free 内存信息  -m 以M为单位

查看操作系统

1
getconfig LONG_BIT  64/32位

xargs 命令

1
2
3
xargs 	find /sbin -perm +700 |ls -l       这个命令是错误的
find /sbin -perm +700 |xargs ls -l 这样才是正确的
xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨

find 命令

1
find . -name '.project' -print -exec rm -rf {} \; 递归删除

查看路由信息(经过网关)

1
2
route -n get default
route -n get www.google.com

追踪路由

1
traceroute www.google.com

linux serf

Serf is a tool for cluster membership, failure detection, and orchestration that is decentralized, fault-tolerant and highly available. Serf runs on every major platform: Linux, Mac OS X, and Windows. It is extremely lightweight: it uses 5 to 10 MB of resident memory and primarily communicates using infrequent UDP messages.
https://www.serfdom.io/intro/index.html

lsof 文件相关信息 pid 端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lsof `which httpd` //那个进程在使用apache的可执行文件
lsof /etc/passwd //那个进程在占用/etc/passwd
lsof /dev/hda6 //那个进程在占用hda6
lsof /dev/cdrom //那个进程在占用光驱
lsof -c sendmail //查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
lsof -p 30297 //显示那些文件被pid为30297的进程打开
lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列
lsof -u1000 //查看uid是100的用户的进程的文件使用情况
lsof -utony //查看用户tony的进程的文件使用情况
lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)
lsof -i //显示所有打开的端口
lsof -i:80 //显示所有打开80端口的进程
lsof -i -U //显示所有打开的端口和UNIX domain文件
lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
lsof -i [email protected]:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
lsof -i [email protected]:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

SystemPerformance.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
#!/bin/sh

# add System paramter to /etc/sysctl.conf
fileDesc=`grep "fs.file-max" /etc/sysctl.conf | awk '{print $1}'`
if [ "fs.file-max" != "${fileDesc}" ];then
echo "file.max not added"
cat << EOF >> /etc/sysctl.conf

#enhance system performance ,add by ChinaEdustar
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 4096
net.core.dev_weight = 64
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
net.core.rmem_default = 110592
net.core.rmem_max = 262141
net.ipv4.tcp_rmem = 4096 98304 349520
net.core.wmem_default = 262141
net.core.wmem_max = 8388608
net.ipv4.tcp_wmem = 4096 65535 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.core.optmem_max = 20480
fs.file-max = 209708
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
kernel.panic = 1

EOF
else
echo "added"
fi


echo 209708 >/proc/sys/fs/file-max


fileDesc=`grep "nofile" /etc/security/limits.conf | awk '{print $1}'`
if [ "*" != "${fileDesc}" ];then
echo "* - nofile 209708" >> /etc/security/limits.conf
else
echo "limits.conf has added"
fi

if [ -f /etc/security/limits.d/90-nproc.conf ]; then
sed -i 's/nproc.*1024/nproc 209708/g' /etc/security/limits.d/90-nproc.conf
fi

if [ "`rpm -qa | grep crontabs`" == "" ]; then
yum install -y crontabs
fi

chkconfig crond --level 345 on


if [ "`rpm -qa | grep ntpdate`" == "" ]; then
yum install -y ntpdate
fi

if [ "`grep "ntpdate" /etc/crontab`" == "" ]; then
echo ntpdate not added
echo "15 5 * * * root ntpdate -u time.ustc.edu.cn" >> /etc/crontab
echo "16 5 * * * root ntpdate -u 192.43.244.18 210.72.145.44 210.0.235.14 59.124.196.84" >> /etc/crontab
fi

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel wget lrzsz openssh-clients ntpdate apr-devel telnet

Jenkins 重启 dubbo 服务脚本

service-restart.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
#!/bin/sh

## java env
source /etc/profile
export JAVA_HOME=/usr/local/jdk1.7.0_75
export JRE_HOME=$JAVA_HOME/jre

if [ $# != 3 ] ; then
echo "USAGE: $0 SERVICE_DIR SERVICE_NAME_PRE DISCONF_ENV"
echo " e.g.: $0 /opt/ync-goods ync-goods rd"
exit 1;
fi
SERVICE_DIR=$1
SERVICE_NAME_PRE=$2

DISCONF_ENV=$3
DISCONF_HOST=192.168.88.30:8080
DISCONF_APP=cwang
DISCONF_VERSION=1.0.0

cd $SERVICE_DIR

# P_ID=`ps -ef | grep -w "$SERVICE_NAME_PRE" | grep -v "grep" | awk '{print $2}'`
P_ID=`jps -ml|grep "$SERVICE_NAME_PRE"|awk '{print $1}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi

sleep 3

JAR_NAME=`ls -rt *.jar|grep -v 'sources'|tail -1`

echo "START JAR_NAME "$JAR_NAME
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar -Ddisconf.env=$DISCONF_ENV -Ddisconf.conf_server_host=$DISCONF_HOST -Ddisconf.app=$DISCONF_APP -Ddisconf.version=$DISCONF_VERSION -Ddisconf.user_define_download_dir=.classes -Ddisconf.enable.remote.conf=true $JAR_NAME >$SERVICE_NAME_PRE.log 2>&1 &

ls *.jar|grep -v $JAR_NAME|xargs rm -rf
exit 0

service-region.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
#!/bin/sh

## java env
export JAVA_HOME=/usr/local/jdk1.7.0_75
export JRE_HOME=$JAVA_HOME/jre

## service name
APP_NAME=region
SERVICE_DIR=/opt/ync-region

FILE_NAME=`ls /opt/ync-region| grep '.[0-9]'.jar`

SERVICE_NAME=$FILE_NAME
JAR_NAME=$SERVICE_NAME
PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR

case "$1" in

start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -Ddisconf.env=qa -Ddisconf.conf_server_host=192.168.88.30:8080 -Ddisconf.app=cwang -Ddisconf.version=1.0.0 -Ddisconf.user_define_download_dir=.classes -Ddisconf.enable.remote.conf=true -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;;

stop)
#kill `cat $SERVICE_DIR/$PID`
#rm -rf $SERVICE_DIR/$PID
#echo "=== stop $SERVICE_NAME"

sleep 5
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
#kill -9 $P_ID
fi
;;

restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;

*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0

service-region-tag.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
#!/bin/sh

## java env
export JAVA_HOME=/usr/local/jdk1.7.0_75
export JRE_HOME=$JAVA_HOME/jre

## service name
APP_NAME=region

#find filename
FILE_NAME=`ls /opt/ync-region | grep '.[0-9]'.jar`
echo "FILE_NAME=====================$FILE_NAME"

SERVICE_DIR=/opt/ync-region
SERVICE_NAME=$FILE_NAME
echo "SERVICE_NAME------------------:$SERVICE_NAME"

JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR

if ["$FILE_NAME" == ""];then
exit 0;
fi

sleep 5
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
echo "P_ID---------------------------:$P_ID"

if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi

`rm -rf $FILE_NAME`


exit 0