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