随机选取端口
1 | 随机设置代理和监控端口,允许每台机器有多个代理 |
后台执行,获取其PID
1 | rcssserver3d --agent-port $SPARK_AGENTPORT --server-port $SPARK_SERVERPORT & |
组合命令
1 | sleep 5 #延迟时间 |
输出判断
1 | while [ ! -f $OUTPUT_FILE ] && [ $total_wait_time -lt $maxWaitTimeSecs ] |
关闭进程
1 | echo "Killing Simulator" |
格式:kill <pid>
格式:kill -TERM <pid>
发送SIGTERM旌旗灯号到指定过程,若是过程没有捕获该旌旗灯号,则过程终止(If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal.)
格式:kill -l
列出所有旌旗灯号名称(Print a list of signal names. These are found in /usr/include/linux/signal.h)。只有第9种旌旗灯号(SIGKILL)才可以无前提终止过程,其他旌旗灯号过程都有权力忽视。下面是常用的旌旗灯号:
旌旗灯号名称
-
HUP 1 终端断线
-
INT 2 中断(同 Ctrl + C)
-
QUIT 3 退出(同 Ctrl + )
-
TERM 15 终止
-
KILL 9 强迫终止
-
CONT 18 持续(与STOP相反, fg/bg号令)
-
STOP 19 暂停(同 Ctrl + Z)
Bash Shell 脚本获取进程 pid
- 第一种方法:
ps -ef | grep "Processname" | grep -v grep | awk '{print $2}'
- 第二种
最简单的方法是使用 pgrep:
pgrep -f name
根据PID关闭进程
kill -9 PID
根据进程名关闭进程
法一:
1 | kill -f name1 |
法二:
如果是可执行程序的话,可以直接使用 pidof
1 | pidof name |
关闭Roboviz.sh里java进程的方法:
grep -v :显示不包含匹配文本的所有行(反向查找)。比如 grep -v grep 就是查找不含有 grep 字段的行
写法一:kill -9 $(ps x | grep Roboviz.jar | grep -v grep | awk '{print $1}')
写法二: ps -ef | grep Roboviz.jar | grep -v grep | awk '{print $2}' | xargs kill -9
shell脚本中的冒号作用
作用一: 占位符<==>pass
1 | if egrep '.*vmlinuz-2.6.32-220.23.1.lvs.el6.*nohz=off' /boot/grub/grub.conf ;then |
作用二: 分隔符
冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)
宏
特殊变量:
-
- $? 上句执行结果
command -v用法
在Linux中,command -v 可以判断一个命令是否支持,如果一个脚本需要,或者还要家if判断,则示例如下:
1 | 判断是否存在docker |
Author: Mrli
Link: https://nymrli.top/2019/01/23/Shell代码编写记录/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.