您好,登錄后才能下訂單哦!
請解釋下面Shell腳本中 if開頭的整行代碼的意思,你見過它的應用場景么?
if(kill -0 $pid 2>/dev/du11) then echo"oldboy" else echo"oldgirl" fi
面試題:請解釋if (kill -0 $pid 2>/dev/null)代碼的意思?
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命令執行腳本關閉數據庫的程序代碼如下:
'stop')
# Stop daemon. We usea signal here to avoid having to know the
# root password.
iftest-s"$mysqld_pid_file_path"
then
mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill-0$mysqld_pid2>/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
;;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。