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
用戶名加密
用戶密碼進程
用戶IDcrontab
組ID內存
用戶別名ci
用戶家目錄it
用戶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段,分析下
用戶名
加密後的屏蔽口令
加密後最後的更改日期。表示從1970-1-1至今的天數
密碼至少保留的天數,0爲不限制
密碼在多少天后必須更改
密碼到期前,提早多少天提醒
在密碼過時後的多少天,帳號被認爲失效
帳號過時時間。從1970-1-1 至今
保留標誌,無心義
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:
有四列
組名
組密碼
組ID
組中的用戶列表,用戶名之間以逗號分開
同理密碼存放在/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