2015-04-03 16 views
1

我有一個基於debian的專用服務器,想知道在服務器引導時向數據庫插入一行的最佳方式是什麼。我試圖在基於PHP的監控站點上的通知中顯示它。在服務器啓動時插入MySQL行

我目前正在考慮一個簡單的腳本(尚未決定語言),只在啓動時運行一次,然後終止。那裏有更好的解決方案嗎?

編輯: 我在init.d文件夾中使用腳本在不同的運行級別上運行。目前,我唯一已經開始工作的是插入關於啓動服務器的一行的bash腳本。這是在rcS.d /下。

問題是,例如,當我使用相同的方法運行腳本而運行級別爲0或6時,腳本從不運行。我認爲這可能是一個優先問題。看看下面的圖片(優先級與apache的殺死優先級相同...)。這些腳本是按字母順序運行的,還是可以通過某種方式將所有優先級都顛倒過來?

The priority is the same as the kill priorities for apache, etc...

+0

您可以將此行插入到crontab「@reboot/var/www/myserverrebooted.php」中 – Daan 2015-04-03 12:57:54

+0

編輯該問題的詳細信息。 – DoYouEvenHTML 2015-04-07 12:16:26

回答

0

MySQL有一個內置的選項來執行上啓動SQL文件,你想要什麼這聽起來像: https://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_init-file

你可以做的另一件事是剛剛檢查服務器正常運行時間週期並將其與已知值進行比較,或者只是檢查它最近重新啓動。

你最近的想法使用啓動腳本也有好處,問題是你需要確保它運行 mysql已經啓動。 S01是優先級/順序,所以你想要放入一個比MySQL大的數字。

根據你使用的是什麼樣的分佈,這個數字可能不適用,雖然如果系統使用upstart或systemd並且它更復雜。

crontab @reboot建議也是一個不錯的選擇。

+1

值得注意的是,由於升級等原因,init-file也會在mysql重新啓動時運行。 – 2015-04-03 13:09:57

+0

還有關於服務器重新啓動的數據也存儲在/ var/run/wtmp(在控制檯上運行'last') – 2015-04-03 13:10:14

+0

也意識到在任何這樣的'init-file'中的命令都將以不受限制的特權運行 - 所以要非常小心**,以免它們被惡意修改。 – eggyal 2015-04-03 13:11:29