歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux啟動過程、守護進程以及其他

Linux啟動過程、守護進程以及其他

日期:2017/3/1 16:14:54   编辑:關於Linux
Linux啟動過程、守護進程以及其他 系統:ubuntu server 12.04 1、linux啟動過程 2、關於SysV風格的啟動方式 3、運行級別(runlevel) 運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動 運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸 運行級別2:多用戶狀態(沒有NFS)(Multi-User Mode Without Networking) 運行級別3:完全的多用戶狀態(有NFS),登陸後進入控制台命令行模式 運行級別4:多用戶狀態,系統未使用,保留 運行級別5:X11控制台,登陸後進入圖形GUI模式 運行級別6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動 運行級別S :單用戶恢復模式,運行很少進程以及服務 查看當前runlevel: 使用命令rulevel 切換運行級別:init [0123456Ss] /etc/inittab: ubuntu 12.04中沒有該文件,創建一個即可。在裡面寫入系統啟動後進入的運行級別:id:N:initdefault: 。N是runlevel對應的數值。 相關工具: sysv-rc-conf,update-rc.d,rcconf,chkconfig 4、ubuntu12.04如何啟動到字符界面 ubuntu server 12.04安裝桌面後,每次啟動默認進入lightDM,之後進入桌面環境。查看的runlevel為2,使用inittab文件將啟動的runlevel改為3後仍然會進入桌面。而各個rcN.d文件下也沒有關於LightDM的文件。 方法一:修改內核啟動參數 nano /etc/default/grub 修改 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 為: GRUB_CMDLINE_LINUX_DEFAULT=” text” 然後運行下sudo update-grub2就可了。 不過在12.04 server中GRUB_CMDLINE_LINUX_DEFAULT的值為空(即"")。而update-grub2命令實際上指向update-grub命令。 方法二:upstart體系 /etc/rcN.d中的文件都是/etc/init.d目錄中文件的軟鏈接,/etc/init.d目錄裡面基本上都是/lib/init/upstart-job文件的軟連接(可以找時間分析下這個文件),upstart系統對啟動項目的管理全部根據/etc/init目錄裡面的配置文件。所以可以修改一下/etc/init/lightdm.conf。 在/etc/init/lightdm.conf中可以看到: start on ((filesystem and runlevel [!06] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics)) or runlevel PREVLEVEL=S) stop on runlevel [06] 由於把runlevel設置為了3,所以改為: start on ((filesystem and runlevel [!036] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics)) or runlevel PREVLEVEL=S) stop on runlevel [036] 方法三:/etc/lightdm/users.conf(測試失敗,沒搞懂hidden-users是什麼意思,也可能是該配置文件不起作用) 找到:hidden-users=nobody nobody4 noaccess,改為:hidden-users=sunlt lotte 關於nobody,nobody4,noaccess: Windows系統在安裝後會自動建立一些用戶帳戶,在Linux系統中同樣有一些用戶帳戶是在系統安裝後就有的,就像Windows系統中的內置帳戶一樣。它 們是用來完成特定任務的,比如nobody和ftp等,我們訪問LinuxSir.Org的網頁程序,就是nobody用戶(相當於Windows系統中 的匿名帳戶);我們匿名訪問ftp時,會用到用戶ftp或nobody。 首先,nobody是一個普通用戶,非特權用戶。 使用nobody用戶名的目的是,使任何人都可以登錄系統,但是其UID(65534)和GID(65534)不提供任何特權,即該uid和gid只能訪問人人皆可讀寫的文件。 其次,許多系統中都按慣例地默認創建一個nobody,盡量限制它的權限至最小,當服務器向外服務時,可能會讓client以nobody的身份登錄。 nobody -- an anonymous user account ,assigned by an NFS server when an unauthorized root user makes a request. The nobody user account is assigned to software processes that do not need any special permissions. noaccess -- The account assigned to a user or a process that needs access to a system through some application without actually logging into the system. nobody4 -- SunOS4.0 or 4.1version of the nobody account. 5、如何創建基於rcN.d的守護進程 如何軟連接: bash >> ln -s tree.txt tree bash >> ls -l ... lrwxrwxrwx 1 sunlt sunlt 8 Mar 21 08:19 tree -> tree.txt -rw-rw-r-- 1 sunlt sunlt 104946 Mar 20 07:19 tree.txt ... 示例1:記錄開關機時間 ubuntu的系統日志一般放在目錄/var/log中。現在制作一個簡單的記錄開關機時間的日志,日志文件為/home/my.log。 文件mylog-halt內容如下: #!/bin/bash echo "start" >> /home/my.log date >> /home/my.log 文件mylog-start內容如下: #!/bin/bash echo "halt" >> /home/my.log date >> /home/my.log 將mylog-start和mylog-halt放入/etc/init.d/目錄中,添加執行權限。自己把這兩個文件軟鏈接到相應的rcN.d目錄或者使用sysv-rc-conf之類的工具。 示例2:一個web服務器 下面是一個簡單的基於python的web server示例py_http.py: #!/usr/bin/python from os import curdir,sep from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer class MyHandler(BaseHTTPRequestHandler): def do_GET(self): content=''' <html><body><h2>hello,kugou!</h2></body></html> ''' self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() self.wfile.write(content) def main(): server = HTTPServer(('',8080),MyHandler) server.serve_forever() if __name__=='__main__': main() 按照示例1配置失敗。(繼續努力...) 但是將python /path/to/py_http.py &放入/etc/rc.local文件中成功。 mysql啟動腳本分析 /etc/init.d/mysql是/lib/init/upstart-job的軟鏈接。 6、如何穿創建基於upstart的守護進程 相關命令:service、initctl、update-rc.d、invoke-rc.d 7、關於at echo touch ~/touch_file | at now + 2 minutes -->兩分鐘後建立/更新文件~/touch_file echo shutdown -h now | at now + 4 hours -->4小時後關機。 8、關於crontab 查看命令cron、crontab的man文檔,其中 man 5 crontab獲得的內容比 man crontab更加詳細。 9、關於nohup 10、其他方式的開機啟動 桌面程序 進入 ~/.config/autostart 目錄 ,創建以名字加.desktop的文件(一個可執行的shell腳本什麼的應該也可以),類似於application目錄中的文件,如果要只在某種桌面環境下啟動,可以在相應的desktop目錄中添加 OnlyShowIn=<desktop-name>;,例如 OnlyShowIn=KDE;。 其他autostart目錄: /etc/xdg/autostart /usr/share/autostart /usr/share/gdm/autostart /usr/share/gnome/autostart ~/.config/autostart ~/.kde/share/autostart ~/.local/share/autostart 其他用戶配置文件 如/etc/bash.bashrc,~/.bashrc
Copyright © Linux教程網 All Rights Reserved