歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

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