/dev/du11) then echo oldboy..."/>
您好,登錄后才能下訂單哦!
請(qǐng)解釋下面Shell腳本中 if開(kāi)頭的整行代碼的意思,你見(jiàn)過(guò)它的應(yīng)用場(chǎng)景么?
if(kill -0 $pid 2>/dev/du11) then echo"oldboy" else echo"oldgirl" fi
面試題:請(qǐng)解釋if (kill -0 $pid 2>/dev/null)代碼的意思?
if(kill -0 $pid 2>/dev/null) then echo "oldboy" else echo "oldgirl" fi
老男孩解答要點(diǎn):
kill -0 $pid中的-0表示不發(fā)送任何信號(hào)給PID對(duì)應(yīng)的進(jìn)程,但是仍會(huì)對(duì)變量值PID對(duì)應(yīng)的進(jìn)程是否存在進(jìn)行檢查,如果$pid對(duì)應(yīng)的進(jìn)程存在,則返回0,不存在返回1。
2>/dev/null不輸出錯(cuò)誤信息。
系統(tǒng)里的應(yīng)用場(chǎng)景是MySQL的/etc/init.d/mysqld腳本中停止MySQL服務(wù)的腳本代碼段。
使用/etc/init.d/mysqld stop命令執(zhí)行腳本關(guān)閉數(shù)據(jù)庫(kù)的程序代碼如下:
'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
;;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。