Linux系統管理(一)

來源:互聯網
上載者:User

標籤:linux   系統管理   

Linux使用者

Linux是多使用者所任務系統。每個使用者帳號可以屬於一個或多個組。在/etc/passwd 中。存放使用者賬戶資訊

[[email protected] ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

檔案中的每一行都對應一個帳號。每行有七列,我來說下分別對應什麼

  1. 使用者名稱

  2. 使用者密碼

  3. 使用者ID

  4. 組ID

  5. 使用者別名

  6. 使用者家目錄

  7. 使用者shell

可以發現一個問題,那就是使用者密碼顯示為“x”,其實,真正加密後的密碼存放在/etc/shadow中,可以看一下

[[email protected] ~]# head /etc/shadow
root:$6$dwez01IFO0l.HprX$.Qq67VBryYgaETeYuYapuNrJUASIDSKwWjRMO8.cv0/d3q9ynpXiIr0iwewqEn7dbNSE50NZfX0vyf5s4jG26.:16250:0:99999:7:::
bin:*:14790:0:99999:7:::
daemon:*:14790:0:99999:7:::
adm:*:14790:0:99999:7:::
lp:*:14790:0:99999:7:::
sync:*:14790:0:99999:7:::
shutdown:*:14790:0:99999:7:::
halt:*:14790:0:99999:7:::
mail:*:14790:0:99999:7:::
uucp:*:14790:0:99999:7:::

每一行有9段,分析下

  1. 使用者名稱

  2. 加密後的屏蔽口令

  3. 加密後最後的更改日期。表示從1970-1-1至今的天數

  4. 密碼至少保留的天數,0為不限制

  5. 密碼在多少天后必須更改

  6. 密碼到期前,提前多少天提醒

  7. 在密碼到期後的多少天,帳號被認為失效

  8. 帳號到期時間。從1970-1-1 至今

  9. 保留標誌,無意義

 

 

Linux組資訊,存放在/etc/group檔案中。

[[email protected] ~]# head /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:

有四列

  1. 組名

  2. 組密碼

  3. 組ID

  4. 組中的使用者列表,使用者名稱之間以逗號分開

同理密碼存放在/etc/gshadow中

[[email protected] ~]# head /etc/gshadow
root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon
sys:::root,bin,adm
adm:::root,adm,daemon
tty:::
disk:::root
lp:::daemon,lp
mem:::
kmem:::

 

管理Linux組

增加Linux組

groupadd [-g <組ID>  [-o] ]  [-r]  [-f]  組名

參數:

-g <組ID> [-o]   指定組ID,沒有使用-o參數時,組ID是唯一的

-r    使用這個參數是,建立的組ID小於499,即建立系統組

-f    當添加一個已經存在的組時,不返回錯誤資訊

在增加組時,groupadd 會讀取/etc/login.defs,這個檔案中設定了新增組ID的範圍,預設情況下是500-60000.一般認為組ID大於500就為使用者組,而組ID小於500則是系統組

例:

添加一個名為newgroup的使用者組

[[email protected] ~]# groupadd newgroup

 

 

修改Linux組

root使用者使用groupmod修改Linux組

groupmod [-g  <組ID>  [-o]  [-n <新的組名>] 組名稱

參數:

-g    <組ID> [-o]      將組ID修改為指定值,沒有使用-o時,組ID是唯一的

-n    <新的組名稱>    將目標組的組名稱改為新的組名稱

 

將newgroup 的名稱改為groupnew,組ID為50000

[[email protected] ~]# groupmod -g 50000 -n groupnew  newgroup

 

刪除Linux組

groupdel 組名

[[email protected] ~]# groupdel groupnew

 

管理Linux使用者

增加使用者

useradd

參數:

-d <家目錄>        指定使用者家目錄

-g<組名>             指定使用者所屬的組

-G<組名>             指定使用者所屬的組,可以指定多個組,組織間用逗號分隔

-m                         建立使用者家目錄

-p<密碼>              設定使用者密碼

-s<shell>               指定使用者shell程式

 

建立使用者Leon,並且指定使用者組為root組,shell為 /bin/bash:

[[email protected] ~]# useradd -g root -s /bin/bash leon

設定密碼

[[email protected] ~]# passwd leon

 

修改Linux使用者

usermod  修改使用者

參數:

-e<日期>   指定帳號到期的日期,格式為YYYY-MM-DD

-f<天數>    在賬戶到期後的多少天后,帳號被禁止

其他參數同上

 

將leon的shell改為/bin/abc, 所屬組改為bin

[[email protected] ~]# usermod -s /bin/abc -g bin leon

 

 

刪除使用者

userdel [-r]  使用者名稱

-r的意思是刪除家目錄下的所有檔案

 

 

 

進程管理

ps顯示當前進程

ps -a  顯示所有進程

ps aux 常用 顯示系統所有進程及使用者

[[email protected] ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19244  1424 ?        Ss   11:47   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    11:47   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    11:47   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    11:47   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    11:47   0:00 [watchdog/0]
root         6  0.0  0.0      0     0 ?        S    11:47   0:00 [events/0]
root         7  0.0  0.0      0     0 ?        S    11:47   0:00 [cpuset]
root         8  0.0  0.0      0     0 ?        S    11:47   0:00 [khelper]
root         9  0.0  0.0      0     0 ?        S    11:47   0:00 [netns]
root        10  0.0  0.0      0     0 ?        S    11:47   0:00 [async/mgr]
root        11  0.0  0.0      0     0 ?        S    11:47   0:00 [pm]
root        12  0.0  0.0      0     0 ?        S    11:47   0:00 [sync_supers]
root        13  0.0  0.0      0     0 ?        S    11:47   0:00 [bdi-default]
root        14  0.0  0.0      0     0 ?        S    11:47   0:00 [kintegrityd/0]
root        15  0.0  0.0      0     0 ?        S    11:47   0:00 [kblockd/0]
root        16  0.0  0.0      0     0 ?        S    11:47   0:00 [kacpid]
root        17  0.0  0.0      0     0 ?        S    11:47   0:00 [kacpi_notify]
root        18  0.0  0.0      0     0 ?        S    11:47   0:00 [kacpi_hotplug]

 

這11列輸出內容分別對應:使用者名稱、進程號、CPU佔用率、記憶體佔用率、虛擬記憶體佔用、駐留記憶體、終端、狀態、開始時間、已耗用時間、運行命令

 

運行進程

分為前台進程和後台進程,運行前台進程,登入系統後,在shell提示符下直接輸出命令即可

運行後台進程,加一個&符號

[[email protected] ~]# find / -name "*.conf" > /tmp/result &
[1] 3230

可以看到,執行完這個命令後,輸出[1] 3230,其中1表示後台進程程式序號,3230則是進程號。使用jobs可以查看背景程式序號及執行情況:

[[email protected] ~]# jobs
[1]+  Done                    find / -name "*.conf" > /tmp/result

表示已經完成

 

上面的方法有個缺點,就是如果關閉終端,則運行在背景進程也會被關閉

可以使用nohup

[[email protected] ~]# nohup find / -name "*.conf" > /tmp/result &
[1] 3241

 

使用at定時執行命令

直接舉例子了啊,太累了

2010-08-16的8:45 PM:

[[email protected] ~]# at 08:45 PM 081610

 

3天后的下午3點

[[email protected] ~]# at 3 PM +3 days

 

20分鐘後

[[email protected] ~]# at now + 20 minutes

 

2月14日的下午

[[email protected] ~]# at noon Feb 14

 

可以用atq查看at任務,刪除某個任務atrm + 列表號

 

 

crontab定期執行任務

使用crontab -e 來編輯目前使用者的周期執行任務

文法:

<分鐘> <小時>  <日> <月>  <星期> 命令

例子:

每個月的每一天的每一分鐘,都執行ls 命令:

*       *       *       *       *       ls

如果想每隔20分鐘執行一次ls,則

20      *       *       *       *       ls

 

每個月的1-10號,每隔20分鐘執行ls

20      *       1-10    *       *       ls

 

用crontab -l 可以查看所有crond任務

可以使用crontab -r 刪除目前使用者的所有crond任務

root 使用者可以通過-u 參數指定使用者,然後對該使用者的crond任務進行修改等操作,修改leon 使用者的crond任務

[[email protected] ~]# crontab -e -u leon

 

 

 

調整進程優先順序

優先順序高的進程,將擁有較多的CPU使用時間,優先順序低的相反。優先順序用數字表示 從-20到19。-20為最高優先順序,19為最低優先順序。查看優先順序 ps -elf

使用nice [-數字] [命令 [參數] ]

如:

[[email protected] ~]# nice --20 sleep 1000

如果不指定優先順序數字,那麼命令優先順序為10

[[email protected] ~]# nice sleep 1000

 

在進程運行時調整優先順序

使用renice 命令可以在進程運行時調整優先順序,文法:

renice 優先順序數字 [ [-p] 進程號]  [ [-g]組名 ] [ [-u]使用者名稱 ]

 

 

終止進程

kill [-s 訊號 | -p] [-a] [--] 進程號

kill -l 訊號

參數:

-s<訊號>    制定發送的訊號

-p                只顯示進程號

-l                  訊號列表

[[email protected] ~]# kill -l
 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP
 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX 

 

如果在kill -l 後加上訊號名/訊號數字,則會輸出對應的訊號數字/訊號名

[[email protected] ~]# kill -l KILL
9
[[email protected] ~]# kill -l 9
KILL

 

結束進程

結束6223的進程

kil 6334

 

其實預設的發送的事15的訊號,有時候15的不行,就要用9強制結束訊號,這個很厲害的

kill -9 23342

 

 

本文出自 “IT 行者松” 部落格,請務必保留此出處http://520yatou.blog.51cto.com/6642882/1435031

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.