到底哪些服務適合開機自啟動?是很多Linux運維在工作中會遇到的問題。其實,只要不影響系統及服務的運行,開多開少也沒關系。Linux運維人員要明確每項服務的作用,不用的就不安裝,默認安裝時則不開機自啟動。設置開機自啟動服務的常見方法有哪些?
為林芝等地區用戶提供了全套網頁設計制作服務,及林芝網站建設行業解決方案。主營業務為成都網站設計、成都網站制作、林芝網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1)執行命令,然后手動選擇處理的方法
方法1:執行ntsysv命令,然后在彈出窗口進行設置。
方法2:執行setup命令→system service,然后在彈出窗口中進行設置。
2)通過一行命令或She11腳本設置
在快速設置前,先查看默認情況下Linux系統開啟的服務有哪些。如果工作在文本模式3級別,那就只需要查找3級別上開啟的服務即可。了解了系統在3級別上開啟的服務后,就可以通過命令快速實現配置了。以下便是幾種通過命令或腳本設置開機自啟動的方法。
1:先全關閉,再開啟需要保留的。
2:一條命令搞定,Shell循環實現。默認情況下需要保留的服務都已開啟,因此,關閉3級別文本模式下已開啟但又不需要的服務就好了。
3:不要Shell循環語句也一條命令搞定。默認情況下要保留的服務都已開啟,因此,關閉3級別文本模式下已開啟但又不需要的服務就好了,不用循環結構而是利用命令拼出所有要處理的命令字符串,通過bash將其當作命令執行。
那么到底將哪些服務作為開機自啟動服務合適?但作為一名優秀的Linux系統管理員,應該遵守最小化原則,盡量不安裝不使用的軟件、不開啟不需要的服務;這樣系統的性能和安全性才是最好的。
某個程序方便后續的管理;那么我們如何在開機時候,運行此賬戶安裝的程序呢?例如:以linux下指定mycount用戶在linux開機時執行/home/sun/startXX.sh為例:
以root登錄linux
執行vi /etc/rc.d/rc.local
在文檔末尾添加一行語句:su – mycount -c “/home/sun/startXX.sh”
保存rc.local即可。
這個地方一定要注意 su – 這個是環境的變量也會做相應的轉換;如果環境變量沒有改變的話,我們用su 就可以了。
二、
在Linux中以普通用戶開機自動運行腳本程序
測試環境:CentOS6.5
管理員:root
普通用戶:test1
實現目標:在Linux啟動時,以普通用戶test1自動運行位于根目錄下的腳本程序test.py,該程序會在每次執行時自動向本地日志文件追加一條記錄,源碼如下:
from datetime import datetime
now=datetime.now()
f=open(‘test.log’,’a’)
f.write(‘%s ‘%now)
f.close()
Linux在啟動時,會自動執行/etc/rc.d目錄下的初始化程序,因此我們可以把啟動任務放到該目錄下,有兩種辦法:
方案一:
1、因為其中的rc.local是在完成所有初始化之后執行,因此我們可以把啟動腳本寫到里面
2、用root賬號登陸Linux,vi /etc/rc.d/rc.local編輯文件,在最后加入兩行需要執行的腳本程序:
cd /home/test1 –該步不可少,否則會提示沒有權限打開’test.log’文件
su test1 -c “python /home/test1/test.py” –把要執行的命令作為一個參數傳遞級su
方案二:
1、init.d目錄下都為可執行程序,他們其實是服務腳本,按照一定格式編寫,Linux 在啟動時會自動執行,類似Windows下的服務
2、用root帳號登錄,vi /etc/rc.d/init.d/mystart,追加如下內容:
復制代碼
#!/bin/bash
#chkconfig:2345 80 05 –指定在哪幾個級別執行,0一般指關機,
6指的是重啟,其他為正常啟動。80為啟動的優先級,05為關閉的優先機
#description:mystart service
RETVAL=0
start(){ –啟動服務的入口函數
echo -n “mystart serive …”
cd /home/test1
su test1 -c “python /home/test1/test.py”
}
stop(){ –關閉服務的入口函數
echo “mystart service is stoped…”
}
case $1 in –使用case,可以進行交互式操作
start)
start
;;
stop)
stop
;;
esac
exit $RETVAL
復制代碼
3、運行chmod +r /etc/rc.d/init.d/mystart,使之可直接執行
4、運行chkconfig –add mystart,把該服務添加到配置當中
5、運行chkconfig –list mystart,可以查看該服務進程的狀態
總結:
兩種方案的的核心都是切換用戶到test1,然后執行命令啟動Python程序,做成服務的好處是可以定義多個交互命令,比如:start,stop,restart,reset…,在服務運行的過程中還可以做相應操作。最開始的時候,我按照一般的思路寫了如下腳本,卻怎么也執行不了:
su test1 –切換到test1用戶
cd /home/test1 –切換到根目錄
python test.py –執行python程序
exit –退出test1帳號
看起來好象一切都沒錯,但是發現只運行了第一行的命令,后面的都沒有運行,直到退出test1用戶后才發現好象執行完畢。分析原因,是因為Linux啟動的時候是在root帳號下,執行su test1等于打開了一個新的shell腳本,因此下面的代碼都在等著新的Shell腳本結束才能運行,就象在主程序里調用了一個子程序,而子程序是個死循環,一下出來來結果下面的要等死了。知道了發生的原因,那么解決的辦法就相對簡單了,就是在執行上述腳本程序時,不要離開本身的Shell。我們可以把執行命令做為su的一個參數傳遞進去,因為沒有涉及到打開新的Shell,因此可以正常執行你期望的腳本程序,順利實現開機自動啟動指定的腳本程序。
執行方案中重要的一個命令是:
[root@localhost ~]# whoami
root
[root@localhost ~]# su – keysystem -c “whoami”
keysystem
[root@localhost ~]#
以keysystem用戶執行whoami的命令:
[root@localhost ~]# su – keysystem -c “whoami”
文章知識點與官方知識檔案匹配
CS入門技能樹Linux入門初識Linux
23840 人正在系統學習中
打開CSDN,閱讀體驗更佳
Linux中沒有rc.local文件的完美解決方法
主要介紹了Linux中沒有rc.local文件的解決方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
最新發布 linux 開機自啟用非root啟動
就會用djq用戶執行mkdir -p /home/djq/222命令。linux 開機自啟用非root啟動。
繼續訪問
linux開機自動執行命令或自動啟動程序(rc.local)
linux開機的最后會執行/etc/rc.local,因此可以在此腳本里面添加shell命令自動執行或者自動啟動某個進程。 比如 自動輸出信息: #!/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
繼續訪問
跳過網絡啟動 linux,Linux啟動時如何跳過fsck
在Linux里,如果一個文件系統被mount過一定次數后,或者距離上次fsck超過一定天數,當系統重起時就會自動fsck。根據文件系統的大小,fsck可能需要幾分鐘甚至幾個小時。隔一段時間作一次fsck是很有必要的,但是如果你不想花費時間fsck,你也可以用如下幾種方法跳過fsck:1. 修改/etc/fstab在/etc/fstab里, 最后一列是系統啟動時fsck的順序。 文件系統 / 應該設...
繼續訪問
linux 查看root 進程,Linux查看非root運行的進程
Linux查看非root運行的進程youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps -U root -u root -NPID TTY TIME CMD663 ? 00:00:00 dbus-daemon713 ? 00:00:00 rsyslogd730 ? 00:00:00 avahi-da...
繼續訪問
linux上使用非root賬戶啟動運行java程序
事情是這樣的、、、、、、、 公司的app后臺程序是java的,在linux上運行時要求必須使用非root賬戶,例如使用app用戶啟動java程序。這次運維有事請假了,所以這個小任務就交給我了,多大的事情啊,這還不是分分鐘搞定的啊。 好了一步步的開始。 第一步:創建mobile賬戶和組 groupadd app useradd -d /usr/app -g app app 第二步:搭建...
繼續訪問
linux用其他賬號停進程,Linux系統上對其他用戶隱藏進程的簡單方法
我使用的是多用戶系統,大部分的用戶通過ssh客戶端訪問他們的資源。我如何(怎么樣)避免泄露進程信息給他們?如何(怎么樣)在Debian/Ubuntu/RHEL/CentOS linux服務器器上阻止/避免他們看到不屬于他們的進程?對linux上的其他用戶隱藏進程的方法解決方法/方案:如果你使用的linux kernel(內核)是3.2以上的版本(或者使用的RHEL/CentOS是6.5以上的版本)...
繼續訪問
轉:linux開機自動運行
實現目標:在Linux啟動時,自動運行位于普通用戶test1根目錄下的腳本程序test.py,該程序會在每次執行時自動向本地日志文件追加一條記錄,源碼如下: from datetime import datetime now=datetime.now() f=open('test.log','a') f.write('%s '%now...
繼續訪問
跳過開機向導
跳過開機向導
繼續訪問
linux系統rc.local錯誤,Linux開機啟動文件rc.local無法執行的解決方法
眾所周知,rc.local是Linux系統中的一個重要的開機啟動文件,每次開機都要執行這個文件。但最近很多用戶表示系統無法執行這個問題件,從而導致了一系列的問題出現,這是怎么回事呢?如何解決這個問題呢?下面,跟隨小編一起來看看Linux開機啟動文件rc.local無法執行的解決方法。Linux系統在Linux系統中,有一個重要的開機自動啟動腳本文件:/etc/rc.local---》/etc/rc...
繼續訪問
rc.local出錯影響ubuntu正常啟動,跳過執行rc.local
通過進入單用戶模式,跳過rc.local
繼續訪問
Linux開機啟動,設置rc.local失效解決方案
在/etc/rc.local文件夾下,添加要執行的命令,如/sbin/ifconfig docker0 mtu 1454 注意這里要使用絕對路徑/sbin/ifconfig 如果開機發現執行失敗,則需要在上一行添加sleep 10 由于ifconfig服務不一定在rc.local之前啟動,所以讓系統等待十秒hours在執行sleep 10 /sbin/ifconfig docker0 mtu 14
繼續訪問
Linux系統跳過密碼登錄
一、引導系統 RHEL7的標準引導系統是GRUB2,RHEL6默認使用GRUB1,這里主要講GRUB2。 在Linux系統開機選擇內核時,按下e進入內核引導參數的編輯菜單,找到以linux16開頭的一行,在行末添加更多的命令。例如,在行末尾添加system.unit=emergency.target,然后按Ctrl+X,則系統將會以緊急目標模式啟動。 如果在系統引導到GUI環境中出現問題,可以在內核命令行末尾加入system.unit=multi-user.target,若引導成功,則會登錄到命令行模
繼續訪問
rc.local使用非root用戶
su -aaa-c "/data/tomcat/bin/startup.sh"
繼續訪問
Linux設置非root用戶啟動程序
Linux設置非root用戶啟動程序
繼續訪問
開機自啟動非root用戶的服務
設置非root用戶的服務開機自啟動 比如:chkconfig mysql on 是無效的 可以這樣設置: 在root用戶下 vi /etc/rc.local 或者 vi /etc/rc.d/rc.local 在最后一行加上 su - mysqladmin -c "/usr/local/mysql/startMysql.sh" 其中mysqladmin是管理mysql的用戶, "/usr/loc...
繼續訪問
linux非root用戶打開80,Linux非root用戶如何使用80端口啟動程序
默認情況下Linux的1024以下端口是只有root用戶才有權限占用,我們的tomcat,apache,nginx等等程序如果想要用普通用戶來占用80端口的話就會拋出java.net.BindException: Permission denied:80的異常。bind時perror提示錯誤信息:permission denied解決辦法有兩種:1.使用非80端口啟動程序,然后再用iptables...
繼續訪問
Linux在任意目錄下執行指定的腳本
前言 我有個腳本,我只能在腳本所在的文件夾下面運行,這樣的話很不方便,如果我去了別的目錄下面的話,我就無法運行這個腳本了… 解決 在profile中設置PATH, 假如我想給 xcall 腳本設置能讓在任意的目錄下去運行, 此時xcall在/root/soft/script 目錄下. 編輯環境變量 [root@zjj101 etc]# cd /etc [root@zjj101 etc]# vim profile # 上面省略........ export HIVE_HOME=/root/soft/hive
繼續訪問
Linux系統啟動過程分析
經過對Linux系統有了一定了解和熟悉后,想對其更深層次的東西做進一步探究。這當中就包括系統的啟動流程、文件系統的組成結構、基于動態庫和靜態庫的程序在執行時的異同、協議棧的架構和原理、驅動程序的機制等等。 本人在綜合了現有網上大家智慧的基礎上,結合對2.6.32的內核代碼的研讀,基于CentOS 6.0系統對Linux的啟動流程做了些分析。由于才疏學淺,知...
繼續訪問
linux跳過開機啟動項
原文及更新:
直接在/etc/rc.local(/etc/rc.d/rc.local)文件中添加即可
上面這腳本實際上在使用時出現了問題, /home/neucrack/software/ss/start_ss_local.sh 這個命令始終沒有被執行,原因是 /home/neucrack/software/ss/start_kcptun_client.sh 中的命令阻塞了進程,導致后面一句始終沒有執行,可以將他們分別放到后臺執行就行了,如何在后臺執行可以看文章最后一部分
也可以自己手動在rc*.d中建立軟連接
桌面系統搜索 啟動 ,打開啟動管理器 添加刪除即可
一般有以下幾種方法:
1)在輸入命令的最前面加上 nohup 命令
如 nohup your_command 這樣命令在你退出后仍然會在后臺執行
2) setsid 命令
setsid your_command 該命令的結果是使你所運行的命令的父進程為init,所以只有關機該進程才會停止
3) (your_command )
就是用括號將你的命令括起來,這樣做也是使命令的父進程為init
4) disown
當你在命令行下輸入 your_command 后命令就在后臺執行了,然后執行jobs命令,該命令會列出當前正在后臺執行的命令。例如輸入命令“top”
然后執行"jobs"
輸出結果是
[1] + Suspended (tty output) top
注意行開頭方括號內的數字,該數字叫做jobspec,是給當前后臺運行的job的編號。這是你只要在命令行下輸入"disown -h 1" 后臺運行的top命令就不會受到hangup信號的影響了。
5)使用 screen 命令
在命令行下輸入screen命令就開啟了一個screen進程,它就好像是一個全新的命令運行環境,在該環境中你可以像在正常的terminal下那樣執行
命令,但是這個screen是不受其父進程的hangup信號的影響的,既然screen不受其父進程影響,當你意外掉線或者退出系統時,在screen
中仍在執行的命令仍然會繼續執行。關于screen命令的使用方法你可以再去查閱相關資料。
用戶想要在linux開機的時候自啟動相關的程序。那我們要怎么設置呢?下面由我為大家整理了linux下開機自啟動命令的相關知識,希望對大家有所幫助!
linux下開機自啟動命令
1.開機啟動時自動運行程序
Linux加載后, 它將初始化硬件和設備驅動, 然后運行第一個進程init。init根據配置文件繼續引導過程,啟動其它進程。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目錄下的腳本文件,可以使init自動啟動其它程序。
例如:編輯 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在開機啟動后直接進入X-Window。
擴展:其他情況下linux自啟動程序命令
2.登錄時自動運行程序
用戶登錄時,bash首先自動執行系統管理員建立的全局登錄script :/etc/profile。然后bash在用戶起始目錄下按順序查找三個特殊文件中的一個:/.bash_profile、/.bash_login、 /.profile,但只執行最先找到的一個。
因此,只需根據實際需要在上述文件中加入命令就可以實現用戶登錄時自動運行某些程序(類似于DOS下的Autoexec.bat)。
3.退出登錄時自動運行程序
退出登錄時,bash自動執行個人的退出登錄腳本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",則在每次退出登錄時自動執行 "tar" 命令備份 *.c 文件。
4.定期自動運行程序
linux有一個稱為crond的守護程序,主要功能是周期性地檢查 /var/spool/cron目錄下的一組命令文件的內容,并在設定的時間執行這些文件中的命令。用戶可以通過crontab 命令來建立、修改、刪除這些命令文件。
例如,建立文件crondFile,內容為"00 9 23 Jan * HappyBirthday",運行"crontab cronFile"命令后,每當元月23日上午9:00系統自動執行"HappyBirthday"的程序("*"表示不管當天是星期幾)。 (/etc/crontab中配置命令即可)也可以
5.定時自動運行程序一次
定時執行命令at 與crond 類似(但它只執行一次):命令在給定的時間執行,但不自動重復。at命令的一般格式為:at [ -f file ] time ,在指定的時間執行file文件中所給出的所有命令。也可直接從鍵盤輸入命令:
6.創建開機自啟動腳本
1) 將你的啟動腳本復制到 /etc/init.d目錄下
以下假設你的腳本文件名為 test。
2) 設置腳本文件的權限
$ sudo chmod 755 /etc/init.d/test
3) 執行如下命令將腳本放到啟動腳本中去:
$ cd /etc/init.d
$ sudo update-rc.d test defaults 95
注:其中數字95是腳本啟動的順序號,按照自己的需要相應修改即可。在你有多個啟動腳本,而它們之間又有先后啟動的依賴關系時你就知道這個數字的具體作用了。該命令的輸出信息參考如下:
update-rc.d: warning: /etc/init.d/test missing LSB informationupdate-rc.d: see
卸載啟動腳本的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove
命令輸出的信息參考如下:
Removing any system startup links for /etc/init.d/test … /etc/rc0.d/K95test /etc/rc1.d/K95test /etc/rc2.d/S95test /etc/rc3.d/S95test /etc/rc4.d/S95test /etc/rc5.d/S95test /etc/rc6.d/K95test
很多時候,我們需要將一些服務在Linux系統啟動時即自動運行,省得每次都要去手動啟動一遍,如Redis, MySQL, Nginx等。本文對CentOS與Ubuntu下開機自啟動的配置方法進行整理,供參考查閱。
rc.local是CentOS以前版本的方式,在CentOS7中仍然以兼容的形式存在,雖仍可用,但不推薦(推薦使用systemd service)。
1、編寫需要開機自啟動的腳本,并添加執行權限
作為測試,上述腳本打印一個時間到/tmp/test.log文件中
2、在/etc/rc.d/rc.local配置文件中添加腳本運行命令(使用絕對路徑)
3、添加/etc/rc.d/rc.local文件的執行權限
在centos7中,/etc/rc.d/rc.local沒有執行權限,需要手動授權
以上三步,即可使/root/test_rclocal.sh /dev/null 2/dev/null 命令在服務器系統啟動時自動運行。
1、編寫需要開機自啟動的測試腳本,并添加執行權限
2、在/etc/rc.d/init.d/目錄下添加一個可執行腳本testchkconfig
上述testchkconfig腳本的頭部必須遵循一定的格式 # chkconfig: 2345 90 10, 其中2345指定服務在哪些執行等級中開啟或關閉,90表示啟動的優先級(0-100,越大優先級越低),10表示關閉的優先級。執行等級包括
3、加入開機啟動服務列表
使用 chkconfig --list 可查看當前加入開機自啟動的服務列表,但如Note部分所述,該命令只顯示SysV服務,不包含原生的systemd服務,查看systemd服務可使用systemctl list-unit-files命令。
以上三步,即可使/root/test_chkconfig.sh /dev/null 2/dev/null 命令在服務器系統啟動時自動運行。
chkconfig的其它命令參考
CentOS7的systemd服務腳本存放在:/usr/lib/systemd/system(系統級)/usr/lib/systemd/user(用戶級)下,以.service結尾。這里以nginx為例
1、在/usr/lib/systemd/system目錄下創建nginx.service文件
其中Service部分的Type包括如下幾種類型:
2、 開啟開機自啟動
以上兩步,就將nginx服務配置成了在操作系統啟動時自動啟動。
其它命令參考
從字面看是PID文件不可讀,查看/var/run/nginx.pid,該文件也確實不存在,查看nginx.conf配置文件,發現是pid /var/run/nginx.pid;這行配置被注釋掉了, 如果不指定pid文件位置,nginx默認會把pid文件保存在logs目錄中。所以出現systemd啟動服務時找不到pid文件而報錯,將nginx.conf中的pid配置注釋去掉,重啟nginx.service即可。
在Ubuntu18.04中,主要也是以systemd服務來實現開機自啟動,systemd默認讀取/etc/systemd/system/下的配置文件,該目錄下的一些文件會鏈接到/lib/systemd/system/下的文件。
因此可以在/etc/systemd/system/目錄下面創建一個自啟動服務配置,以內網穿透服務frp客戶端為例,如
各配置項與CentOS類似。然后將服務器加到自啟動列表中并啟動服務
其它更多systemctl命令與CentOS類似。
也可以使用/lib/systemd/system/rc-local.service來執行一些開機需要執行的腳本,該文件內容為
從Description看它是為了兼容之前版本的/etc/rc.local的,該服務啟動命名就是/etc/rc.local start,將該文件鏈接到/etc/systemd/system下
創建/etc/rc.local文件,并賦予可執行權限
作者:半路雨歌
鏈接:
文章題目:開機自啟命令linux 開機自啟命令
本文來源:http://vcdvsql.cn/article38/doodpsp.html
成都網站建設公司_創新互聯,為您提供響應式網站、營銷型網站建設、外貿建站、網站改版、外貿網站建設、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯