作者 主題: 請教CentOS 7 的 rc.local 啟動的問題  (閱讀 4975 次)

0 會員 與 1 訪客 正在閱讀本文。

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
請教CentOS 7 的 rc.local 啟動的問題
« 於: 2016-06-12 21:00 »
請教一下,因為以前都會用 rc.local 來設定開機自動執行一些程式,
在 CentOS 7 改用 systemd 系統來管理開機程序,雖然 rc.local 仍然可以使用,
但是文件有一些註解: 因為 systemd 是平行啟動程式,所以不會保證 rc.local 會等所有的 service 都啟動完成才執行,

請問,如果,我想確定等所有的 service 都啟動完成了,再執行 rc.local 這個要如何設定

以下是 rc.local 的說明

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這說明不保證 rc.local 會等所有的 service 都啟動了,才執行

#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

=========================
http://www.kuolung.net
==========================

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5403
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #1 於: 2016-06-13 11:10 »
我只會把需要的服務寫到 After 裡頭.... 應該不至於是所有的都是吧....

不知道要用那個.... 就執行

systemd-analyze plot > boot.svg

然後看看 boot.svg (用 brower 看就可以) 挑一個來用吧.
一般使用上, multi-user.target 通常是最後幾個, 用這個應該就可以.
« 上次編輯: 2016-06-13 11:14 由 twu2 »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #2 於: 2016-06-13 20:37 »
修改自己的 unit file,用 requires 限定 requirement 呢?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5403
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #3 於: 2016-06-13 21:59 »
我記得在文件中有提到 requires 不保證在之後才會執行 (很有可能會同步執行).
如果要有順序, 要用 After 或 Before 來控制.

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #4 於: 2016-06-14 10:53 »
好多沒接觸過的新觀念 ...

不過以小弟的例子
有些開機執行程式
啟動前須要向其他主機要到資料

(靠 ... 打雷劈到我 ... 我頭頂 ... 窗外冷氣有看到尖端放電特效)

回題 ...
(
while $(sleep 1);do check 機制 && break ;done
這類程式
) &
不是這類的程式

不丟背景卡在這 , 就不會交到 tty 手上了


netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17478
    • 檢視個人資料
    • http://www.study-area.org
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #5 於: 2016-06-14 16:17 »
我記得在文件中有提到 requires 不保證在之後才會執行 (很有可能會同步執行).
如果要有順序, 要用 After 或 Before 來控制.

原來如此, 新的架構還是需要時間慢慢摸索啊...

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #6 於: 2016-06-14 18:39 »
其實我只是很簡單想 我以前的 2wan 的設定程式 要等 network service 執行後才執行
沒想到引起各位大哥的討論

還想請教 unit file 中 after 要怎麼寫
=========================
http://www.kuolung.net
==========================

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5403
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #7 於: 2016-06-15 12:01 »
代碼: [選擇]
After=systemd-networkd.service network.target你可以看一下 /lib/systemd/system/ 底下的檔案. 裡頭應該有一堆. 你要改的檔案也應該在裡頭.

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
Re: 請教CentOS 7 的 rc.local 啟動的問題
« 回覆 #8 於: 2016-07-08 07:59 »
有找到,可以放在 network-online.target 中,

If you use NetworkManager you can do this by enabling NetworkManager-wait-online.service:

systemctl enable NetworkManager-wait-online.service

If you use systemd-networkd you can do this by enabling systemd-networkd-wait-online.service:

systemctl enable systemd-networkd-wait-online.service

systemd 的說明是這樣的,
只是還不太知道,NetworkManager-wait-online.server 的內容要如何編寫

更正一下,應該是修改 network-online.target 的內容才對,
只是它的內容如下

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Network is Online
Documentation=man:systemd.special(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
After=network.target

========================================

如果,我想加指令如下

ip route add default via x.x.x.x table wan1
ip rule add from x.x.x.x table wan1

不知道要如何加入

« 上次編輯: 2016-07-08 08:12 由 kuolung »
=========================
http://www.kuolung.net
==========================