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

相关文章
相关标签/搜索