003-老男孩教育每日一题-kill-0判断的意思及应用场景
请解释下面Shell脚本中 if开头的整行代码的意思,你见过它的应用场景么?
面试题:请解释if (kill -0 $pid 2>/dev/null)代码的意思?
1 2 3 4 5 6 | if(kill -0 $pid 2>/dev/null) then echo "oldboy" else echo "oldgirl" fi |
老男孩解答要点:
- kill -0 $pid中的-0表示不发送任何信号给PID对应的进程,但是仍会对变量值PID对应的进程是否存在进行检查,如果$pid对应的进程存在,则返回0,不存在返回1。
- 2>/dev/null不输出错误信息。
- 系统里的应用场景是MySQL的/etc/init.d/mysqld脚本中停止MySQL服务的脚本代码段。
- 使用/etc/init.d/mysqld stop命令执行脚本关闭数据库的程序代码如下:
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 | 'stop') # Stop daemon. We usea signal here to avoid having to know the # root password. if test-s"$mysqld_pid_file_path" then mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) then echo$echo_n"Shutting down MySQL" kill$mysqld_pid # mysqld shouldremove the pid file when it exits, so wait for it. wait_for_pid removed "$mysqld_pid""$mysqld_pid_file_path"; return_value=$? else log_failure_msg "MySQL server process #$mysqld_pidis not running!" rm"$mysqld_pid_file_path" fi # Delete lock forRedHat / SuSE if test-f"$lock_file_path" then rm-f"$lock_file_path" fi exit$return_value else log_failure_msg "MySQLserver PID file could not be found!" fi ;; |
今天是老男孩教育每日一题陪伴大家的第3天。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
老男孩教育每日一题-起子总结
继续阅读
- 上一篇 >:wordpress页脚版权修改
- 下一篇 >:国外5大好口碑DNS服务器