1. 程式人生 > >Ubuntu 16.04設定rc.local開機啟動命令/指令碼的方法

Ubuntu 16.04設定rc.local開機啟動命令/指令碼的方法

Ubuntu 16.04設定rc.local開機啟動命令/指令碼的方法(通過update-rc.d管理Ubuntu開機啟動程式/服務)

注意:rc.local腳本里面啟動的使用者預設為root許可權。

一、rc.local指令碼

rc.local指令碼是一個Ubuntu開機後會自動執行的指令碼,我們可以在該指令碼內新增命令列指令。該指令碼位於/etc/路徑下,需要root許可權才能修改。

該指令碼具體格式如下:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
  
exit 0

注意: 一定要將命令新增在exit 0之前。裡面可以直接寫命令或者執行Shell指令碼檔案sh。

二、關於放在rc.local裡面時不啟動的問題:

1、可以先增加日誌輸出功能,來檢視最終為什麼這個指令碼不啟動的原因,這個是Memcached啟動時的樣例檔案:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#log
exec 2> /tmp/rc.local.log  # send stderr from rc.local to a log file  
exec 1>&2                  # send stdout to the same log file  
set -x                     #
tell sh to display commands before execution #Memcached /usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root exit 0

2、rc.local檔案頭部/bin/sh修改為/bin/bash

3、如果是執行sh檔案,那麼要賦予執行許可權sudo chmod +x xxx.sh,然後啟動時加上sudo sh xxx.sh

三、 update-rc.d增加開機啟動服務

給Ubuntu新增一個開機啟動指令碼,操作如下:

1、新建個指令碼檔案new_service.sh

#!/bin/bash
# command content
  
exit 0

2、設定許可權

sudo chmod 755 new_service.sh
#或者
sudo chmod +x new_service.sh

3、把指令碼放置到啟動目錄下

sudo mv new_service.sh /etc/init.d/

4、將指令碼新增到啟動指令碼

執行如下指令,在這裡90表明一個優先順序,越高表示執行的越晚

cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90

5、移除Ubuntu開機指令碼

sudo update-rc.d -f new_service.sh remove

6、通過sysv-rc-conf來管理上面啟動服務的啟動級別等,還是開機不啟動

sudo sysv-rc-conf 

7、update-rc.d的詳細引數

使用update-rc.d命令需要指定指令碼名稱和一些引數,它的格式看起來是這樣的(需要在 root 許可權下):

update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
update-rc.d <basename> start|stop <NN> <runlevels>
-n: not really
-f: force

其中:

  • disable|enable:代表指令碼還在/etc/init.d中,並設定當前狀態是手動啟動還是自動啟動。
  • start|stop:代表指令碼還在/etc/init.d中,開機,並設定當前狀態是開始執行還是停止執行。(啟用後可配置開始執行與否)
  • NN:是一個決定啟動順序的兩位數字值。(例如90大於80,因此80對應的指令碼先啟動或先停止)
  • runlevels:則指定了執行級別。

例項:

(1)、新增一個新的啟動指令碼sample_init_script,並且指定為預設啟動順序、預設執行級別(還記得前面說的嗎,首先要有實際的檔案存在於/etc/init.d,即若檔案/etc/init.d/sample_init_script不存在,則該命令不會執行):

update-rc.d sample_init_script defaults

上一條命令等效於(中間是一個英文句點符號):

update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6

(2)、安裝一個啟動指令碼sample_init_script,指定預設執行級別,但啟動順序為50:

update-rc.d sample_init_script defaults 50

(3)、安裝兩個啟動指令碼A、B,讓A先於B啟動,後於B停止:

update-rc.d A 10 40
update-rc.d B 20 30

(4)、刪除一個啟動指令碼sample_init_script,如果指令碼不存在則直接跳過:

update-rc.d -f sample_init_script remove

這一條命令實際上做的就是一一刪除所有位於/etc/rcX.d目錄下指向/etc/init.d中sample_init_script的連結(可能存在多個連結檔案),update-rc.d只不過簡化了這一步驟。

(5)禁止Apache/MySQL相關元件開機自啟:

update-rc.d -f apache2 remove
update-rc.d -f mysql remove

8、服務的啟動停止狀態

#通過service,比如
sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart

9、檢視全部服務列表

sudo service --status-all

相關推薦

Ubuntu 16.04設定rc.local開機啟動命令/指令碼方法

Ubuntu 16.04設定rc.local開機啟動命令/指令碼的方法(通過update-rc.d管理Ubuntu開機啟動程式/服務) 注意:rc.local腳本里面啟動的使用者預設為root許可權。 一、rc.local指令碼 rc.local指令碼是一個Ub

Ubuntu 16.04 筆記本關閉蓋子無法啟動

ice 無法啟動 https get rest power 啟動 can sdn 弄這個主要是因為安裝了nvidia的顯卡驅動、 導致關閉蓋子後再打開蓋子筆記本會休眠。 sudo gedit /etc/UPower/UPower.conf 修改: IgnoreLid

ubuntu 16.04 安裝 Matlab R2016b後啟動出現的問題

nbsp for dmi ble connect sin nag ubun visit License checkout failed.License Manager Error -95MATLAB is unable to connect to the license s

Ubuntu 16.04最簡單的開機執行指令碼方法

Ubuntu16.04目前網上主要有兩種新增開機啟動指令碼的方法,現在介紹一種最簡單也是最實用的的方法,原理是sh指令碼和系統自帶Startup軟體。這也是我在蒐集了很多資料以後才總結出來的,現在總結如下: 1.在檔案系統的根目錄下新建一個空白文件,命名為log.txt(注:一定要是空白文件),

ubuntu 16.04 設定 mysql 的編碼為 utf8

介紹 ubuntu 16.04 mysql 裝上之後,資料庫的預設編碼不全是 utf8,有一些是 latin1 ,這就導致往資料庫裡面儲存中文的時候會出現亂碼,所以還是很有必要設定以下資料庫預

ubuntu 16.04 設定root使用者初始密碼

安裝ubuntu成功後,都是普通使用者許可權,並沒有最高root許可權,如果需要使用root許可權的時候,通常都會在命令前面加上 sudo 。有的時候感覺很麻煩… 我們一般使用su命令來直接切換到root使用者的,但是如果沒有給root設定初始密碼,就會丟擲

Ubuntu 16.04設定root使用者登入圖形介面

1、開啟終端 2、輸入sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 3、新增一行:greeter-show-manual-login=true 儲存關閉。 4、給root設定密碼,在中端中輸入:sudo

Ubuntu 16.04 設定固定IP地址

查詢網路介面名 輸入命令: ifconfig 或者 ip address 記錄下返回結果的網路介面名, 一般以 enp開頭 修改檔案 修改/etc/network/interfaces檔案 將原有的

Ubuntu 16.04 一直卡在開機介面或者使用者登入介面死迴圈問題的解決

轉自: 筆者配置環境:ubuntu 16.04+tensorflow+cudnn,剛開始經常出現重啟或開機時出現一直卡在開機介面或者使用者登入介面死迴圈問題。 原因:NVIDIA 驅動所致,之前安裝方式nvidia驅動出問題。 解決辦法:解除安裝nvidia驅動,重

Ubuntu 16.04 設定MySQL遠端訪問許可權

本文記錄一下在Ubuntu 16.04版本下設定MySQL資料庫的遠端訪問。 第一步:修改配置檔案的埠繫結 開啟的目錄可能會根據MySQL的版本稍有不同,可以先嚐試開啟/etc/mysql/my.cnf這個配置檔案,若該檔案不存在或檔案內容為空,則嘗試下面的檔

Ubuntu 16.04 使用burg修改開機引導主題

前言 學習Linux自然少不了要裝雙系統,其中Ubuntu便是我們用的最多的Linux系統。 裝完雙系統後,Ubuntu會自動生存grub開機引導及選單,及其醜陋,而且很多我們用不到的選項。 今天我們就介紹burg:修改開機引導主題。 效果圖如下:

Ubuntu 16.04設定IP、閘道器、DNS

對於Ubuntu和CentOS 6配置都適用1、修改IP地址開啟/etc/network/interfacessudo vim /etc/network/interfaces加入以下語句:auto eth0 #要設定的網絡卡 iface eth0 inet static #設

ubuntu 16.04和window雙系統 啟動項順序修改

主要參考: 1.首先開機或者重啟,在啟動項選擇選單處記住win7對應的序號,從上至下的序號從0開始計數,我的win7系統選項處於第5個,那麼序號就應該是4,記住後,開啟ubuntu系統。 2.在終端中輸入:sudo gedit /etc/default/grub

ubuntu 18.04 配置 rc.local

       ubuntu 18.04 不再使用 inited 管理系統,改用 systemd         雖然是進步,但很多人(包括我)還是喜歡用原本簡單方便的 rc.local 作為系統啟動指令碼        systemd 裡面有個 rc-local.serv

Mac OS X 使用 rc.local 開機執行命令設定方法

  在 Mac 裡是沒有 rc.local 這貨的,只有一個 rc.common,但是這個東西屬於系統檔案,不建議修改,所以有了如下一個良好的方法來開機執行命令。   之前有寫過 sh 指令碼

ubuntu 16.04 設定輸入法切換方法

一、命令列輸入fcitx-configtool 開啟fcitx介面進行設定      1) 需要增減輸入法, 可以在Input Method 中進行設定,其中列表下第一項為非啟用的。      2)在G

VMware虛擬機器內安裝的Ubuntu 16.04設定靜態IP地址 spark2.0叢集固定IP配置

1.安裝環境 VMware 10.0.4 build-2249910 Ubuntu 16.04 x86_64 2.在VMware中,配置網路環境 VMware在預設安裝完成之後,會建立三個虛擬的網路環境:VMnet0、VMnet1和VMnet8。其型別分別為:橋接網路,Host-only和NAT。

Ubuntu 16.04 安裝Wireshark及執行出錯的解決方法

Ubuntu 16.04 安裝Wireshark步驟: 1.1 新增wireshark源 sudo add-apt-repository ppa:wireshark-dev/stable 1.2 更新版本庫 sudo apt-get update 1.3 安裝wire

Ubuntu 16.04 /home 目錄遷移到獨立分割槽的方法

1 簡介 Ubuntu分割槽方案一般有下面三種: /boot 200M、/ 30G、/home 剩餘全部空間、swap 8G / 剩餘全部空間、swap 8G / 30G、/home 剩餘全部空間、swap 8G 第一種分割槽

Ubuntu 16.04系統中GCC 7.3編譯器安裝方法及C++17標準測試示例

2017年底,C++17標準正式頒佈,該標準的最大貢獻是,提供了STL庫演算法的並行運算版本,對於我這種喜歡追求演算法效能的程式設計師而言,無疑是一個極大的福音。幸運地是,Linux系統標準編譯器GCC能完美地支援C++ 17標準,但需升級到7.0以上版本;不幸