Linux系統管理(一)

Linux用戶shell

Linux是多用戶所任務系統。每一個用戶帳號能夠屬於一個或多個組。在/etc/passwd 中。存放用戶帳戶信息bash

[root@xingzheson ~]# 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/nologinasync

文件中的每一行都對應一個帳號。每行有七列,我來講下分別對應什麼ide

  1. 用戶名加密

  2. 用戶密碼進程

  3. 用戶IDcrontab

  4. 組ID內存

  5. 用戶別名ci

  6. 用戶家目錄it

  7. 用戶shell

能夠發現一個問題,那就是用戶密碼顯示爲「x」,其實,真正加密後的密碼存放在/etc/shadow中,能夠看一下

[root@xingzheson ~]# 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文件中。

[root@xingzheson ~]# 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中

[root@xingzheson ~]# 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的用戶組

[root@xingzheson ~]# groupadd newgroup

 

 

修改Linux組

root用戶使用groupmod修改Linux組

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

參數:

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

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

 

將newgroup 的名稱改成groupnew,組ID爲50000

[root@xingzheson ~]# groupmod -g 50000 -n groupnew  newgroup

 

刪除Linux組

groupdel 組名

[root@xingzheson ~]# groupdel groupnew

 

管理Linux用戶

增長用戶

useradd

參數:

-d <家目錄>        指定用戶家目錄

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

-G<組名>             指定用戶所屬的組,能夠指定多個組,組織間用逗號分隔

-m                         建立用戶家目錄

-p<密碼>              設定用戶密碼

-s<shell>               指定用戶shell程序

 

建立用戶Leon,而且指定用戶組爲root組,shell爲 /bin/bash:

[root@xingzheson ~]# useradd -g root -s /bin/bash leon

設置密碼

[root@xingzheson ~]# passwd leon

 

修改Linux用戶

usermod  修改用戶

參數:

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

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

其餘參數同上

 

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

[root@xingzheson ~]# usermod -s /bin/abc -g bin leon

 

 

刪除用戶

userdel [-r]  用戶名

-r的意思是刪除家目錄下的全部文件

 

 

 

進程管理

ps顯示當前進程

ps -a  顯示全部進程

ps aux 經常使用 顯示系統全部進程及使用者

[root@xingzheson ~]# 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提示符下直接輸出命令便可

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

[root@xingzheson ~]# find / -name "*.conf" > /tmp/result &
[1] 3230

能夠看到,執行完這個命令後,輸出[1] 3230,其中1表示後臺進程程序序列號,3230則是進程號。使用jobs能夠查看後臺程序序列號及執行狀況:

[root@xingzheson ~]# jobs
[1]+  Done                    find / -name "*.conf" > /tmp/result

表示已經完成

 

上面的方法有個缺點,就是若是關閉終端,則運行在後臺的進程也會被關閉

可使用nohup

[root@xingzheson ~]# nohup find / -name "*.conf" > /tmp/result &
[1] 3241

 

使用at定時執行命令

直接舉例子了啊,太累了

2010-08-16的8:45 PM:

[root@xingzheson ~]# at 08:45 PM 081610

 

3天后的下午3點

[root@xingzheson ~]# at 3 PM +3 days

 

20分鐘後

[root@xingzheson ~]# at now + 20 minutes

 

2月14日的下午

[root@xingzheson ~]# 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任務

[root@xingzheson ~]# crontab -e -u leon

 

 

 

調整進程優先級

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

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

如:

[root@xingzheson ~]# nice --20 sleep 1000

若是不指定優先級數字,那麼命令優先級爲10

[root@xingzheson ~]# nice sleep 1000

 

在進程運行時調整優先級

使用renice 命令能夠在進程運行時調整優先級,語法:

renice 優先級數字 [ [-p] 進程號]  [ [-g]組名 ] [ [-u]用戶名 ]

 

 

終止進程

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

kill -l 信號

參數:

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

-p                只顯示進程號

-l                  信號列表

[root@xingzheson ~]# 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 後加上信號名/信號數字,則會輸出對應的信號數字/信號名

[root@xingzheson ~]# kill -l KILL
9
[root@xingzheson ~]# kill -l 9
KILL

 

結束進程

結束6223的進程

kil 6334

 

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

kill -9 23342

相關文章
相關標籤/搜索