Linux9比较全

转载 2013年12月10日 16:03:33

一、用户查询工具的原理;

在用户管理中,用户查询是通过几个常用的工具来完成的,比如id 、finger、groups、users ... ... ,我们都知道用户的配置文件是/etc/passwd,用户组的配置文件是/etc/groups 文件,我们对用户的查询除了通过查询工具以外,我们还能直接查看用户和用户组的配置文件来达到查询的目的;

用户查询工具的原理也是读取与用户和用户组有关的配置文件,然后按一定的规则和条件输出,用户和用户组配置文件很重要,所以您有必要先读一下关有用户管理的文档:

《Linux 用户(user)和用户组(group)管理概述》
《用户(user)和用户组(group)配置文件详解》


二、用户(User)和用户组(Group)查询工具;


1、id 工具: 查询用户所对应的UID 和GID 及GID所对应的用户组;

id 工具是用来查询用户信息,比如用户所归属的用户组,UID 和GID等;id 用法极为简单;我们举个例子说明一下;

语法格式: id [参数][用户名]

至于有哪些参数,自己查一下 id --help 或man id ;如果id后面不接任何参数和任何用户,默认显示当前操作用户的用户名、所归属的用户组、UID和GID等;

实例一:不加任何参数和用户名;

[beinan@localhost ~]$ id
uid=500(beinan)gid=500(beinan) groups=500(beinan)

注解:在没有加任何参数的情况下,查询的是当前操作用户的用户名、UID 、GID 和所处的主用户组和附属用户组;在本例中,用户名是beinan,UID是500,所归属的主用户组是beinan,GID是500 ;


实例二: id 后面接用户名;

如果我们想查询系统中用户的UID和GID 相应的内容,可以直接接用户名,但用户名必须是真实的 ,能在/etc/passwd中查到的;

[beinan@localhost ~]$ id linuxsir
uid=505(linuxsir)gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)

注解:查询用户linuxsir 的信息,用户linuxsir ,UID 为505,所归属的主用户组是linuxsir,主用户组的GID是502;同时linuxsir用户也是GID为0的root用户组成员,也是GID为500用户组beinan的成员;

这个例子和实例一在用户组方面有所不同,我们在 《Linux 用户(user)和用户组(group)管理概述》 中有提到;用户和用户组的对应关系,可以是一对一、一对多、多对一、或多对多的交叉关系,请参考之;另外您还需要掌握《用户(user)和用户组(group)配置文件详解》一文;


2、finger 工具:用来查询用户信息,侧重用户家目录、登录SHELL等;

finger 工具侧重于用户信息的查询;查询的内容包括用户名(也被称为登录名Login),家目录,用户真实的名字(Name)... ... 办公地址、办公电话;也包括登录终端、写状态、空闭时间等;

我们最常用finger 来查询用户家目录、用户真实名、所用SHELL 类型、以及办公地址和电话,这是以参数 -l 长格式输出的;而修改用户的家目录、真实名字、办公地址及办公电话,我们一般要能过chfn命令进行;


语法格式:


finger [参数选项] [用户名]
-l 采用长格式(默认),显示由-s选项所包含的所有信息,以及主目录、办公地址、办公电话、登录SHELL、邮件状态、.plan、.project和.forward;
-m 禁止对用户真实名字进行匹配;
-p 把.plan和.project文件中的内容省略;
-s 显示短格式,用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等;

至于finger 有哪些参数,您可以通过 finger --help 或man finger 来获取,我们在本文中以实例讲述最常用的参数;


实例一:不接任何参数,也不指定查询用户名;默认为加了-s参数;

[beinan@localhost ~]$ finger
LoginName Tty Idle Login Time Office Office Phone
beinanbeinan sun tty1 1:39 Nov 2 08:27
linuxsirlinuxsir open tty2 2 Nov 2 10:03 linuxsir o +1-389-866-771

等价命令

[beinan@localhost ~]$ finger -s


注解:不加任何参数,也没有指定查询哪个用户,finger 会以默认以短格-s 来输出登录本机的所有用户的用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等;

在这个例子中,有beinan用户登录,真实名字是beinan sun (这个名字是用户的真实名字,如果在添加用户时没有设置,是不会显示的),在tty1终端登录,空闭时间是1分39秒,登录时间是Nov /2/08:27 ,没有办公室名称,没有办公电话;

请对照本例中beinan用户记录的解说,我们来看看本例中的 linuxsir用户信息;应该不难。

关于写状态,如果在Tty 后面 没有任何输出,表示正在写入,如果有*出现,表示没有写入或被禁止,比如下面的例子,ftp用户没有通过终端登录系统,因为Tty是*,同时Tty后面还有一个* ,表示禁止写入或没有写入状态(当用户没有登录时);

[beinan@localhost ~]$ finger -s ftp
LoginName Tty Idle Login Time Office Office Phone
ftpFTP User * * No logins

我们可以以短格式的来查询某个用户信息以短格式输出,比如下面的例子;

[beinan@localhost~]$ finger -s beinan

实例二:关于长格式的用户信息的输出 -l 参数的实例;

finger -l 如果不加用户名的情况下,可以列出所有通过tty登录的用户信息;如果您想查询某个用户,就直接指定用户,可以指定一个或多个;什么是tty登录?如果您在全屏文本界面操作的话,您可以通过按CTRL+F2或CTRL+F3 或CTRL+F4等, 以几个不同的用户登录到主机上,您就会看到,每个用户都有不同的tty;

[beinan@localhost ~]$ finger -l
[beinan@localhost~]$ finger -l beinan linuxsir 注:可以同时查询几个用户信息,以长格式输出;

[beinan@localhost ~]$ finger beinan
Login:beinan Name: beinan sun
Directory:/home/beinan Shell: /bin/bash
Onsince Wed Nov 2 08:27 (CST) on tty1 2 hours 29 minutes idle
Onsince Wed Nov 2 10:50 (CST) on pts/0 from :0.0
Nomail.
NoPlan.

在本例中,所查询的用户是beinan,真实名字是beinan sun ,家目录位于 /home/beinan ,所用SHELL类型是bash ;然后就是通过哪个终端登录的,登录时间,是不是有mail ,有Plan 等;

实例三:参数组合的例子;

[beinan@localhost ~]$ finger -lpbeinan
Login:beinan Name: beinan sun
Directory:/home/beinan Shell: /bin/bash
Onsince Wed Nov 2 08:27 (CST) on tty1 2 hours 36 minutes idle
Onsince Wed Nov 2 10:50 (CST) on pts/0 from :0.0
Nomail.

注解:查询beinan用户信息,以长格式输出,并且不输出.Plan和.Project的内容;

实例四: finger -s 和w 及who的比较;

对于finger 就说这么多吧,极为简单的工具,当用到-s 参数时,您最好和w和who工具对照,看看finger -s 和w 及who的输出有什么异同,w和who是查询哪些用户登录主机的;而finger -s 呢,无论是登录还是不登录的用户都可以查;但所查到的内容侧重有所不同;自己看看例子;

[beinan@localhost ~]$ finger -s
LoginName Tty Idle Login Time Office Office Phone
beinanbeinan sun tty1 3:03 Nov 2 08:27
beinanbeinan sun pts/0 Nov 2 10:50 (:0.0)
linuxsirlinuxsir open tty2 1:26 Nov 2 10:03 linuxsir o +1-389-866-771
[beinan@localhost~]$ w
 11:30:36up 3:04, 3 users, load average: 0.30, 0.15, 0.10
USERTTY FROM LOGIN@ IDLE JCPU PCPU WHAT
beinantty1 - 08:27 3:03m 2:520.00s /bin/sh /usr/X11R6/bin/startx
linuxsirtty2 - 10:03 1:26m0.01s 0.01s -bash
beinanpts/0 :0.0 10:50 0.00s 0.16s 0.00s w
[beinan@localhost~]$ who
beinantty1 Nov 2 08:27
linuxsirtty2 Nov 2 10:03
beinanpts/0 Nov 2 10:50 (:0.0)


3、查询登录主机的用户工具:w 、who 、users

w、who和users工具,是查询已登录当前主机的用户;另外finger -s 也同样能查询;侧重点不一样;请自己对比着看;毕竟简单,这里只是介绍 ;

[beinan@localhost ~]$ w
 12:09:56up 3:43, 7 users, load average: 0.16, 0.10, 0.04
USERTTY FROM LOGIN@ IDLE JCPU PCPU WHAT
beinantty1 - 08:27 3:42m3:09 0.00s /bin/sh /usr/X11R6/bin/startx
linuxsirtty2 - 10:03 2:06m0.01s 0.01s -bash
beinanpts/0 :0.0 11:36 1:09 0.15s 0.15s bash
beinanpts/1 :0.0 11:37 1:12 0.21s 0.21s bash
beinanpts/2 :0.0 12:02 6:52 0.09s 0.09s bash
beinanpts/3 :0.0 12:05 12.00s 0.11s 0.06s ssh xmbnnbdl@linuxsir.org -p 17007
beinanpts/4 :0.0 12:06 0.00s 0.21s 0.00s w
[beinan@localhost~]$ who
beinantty1 Nov 2 08:27
linuxsirtty2 Nov 2 10:03
beinanpts/0 Nov 2 11:36 (:0.0)
beinanpts/1 Nov 2 11:37 (:0.0)
beinanpts/2 Nov 2 12:02 (:0.0)
beinanpts/3 Nov 2 12:05 (:0.0)
beinanpts/4 Nov 2 12:06 (:0.0)
[beinan@localhost~]$ users
beinanbeinan beinan beinan beinan beinan linuxsir


4、groups 用户所归属的用户组查询;

groups 用法很简单,就是查询用户所归属哪个或哪些用户组;

语法格式: groups 用户名

实例:

[beinan@localhost ~]$ groups beinan注:查询beinan所归属的用户组;
beinan: beinan 注:beinan 是beinan用户组下的成员;
[beinan@localhost~]$ groups linuxsir 注:查询linuxsir用户所归属的用户组;
linuxsir: linuxsir root beinan 注:linuxsir用户是linuxsir用户组、beinan用户组、root用户组成员;

groups 主要是查询用户所归属的用户组名,最好和id命令相对比;这样对这两个工具都有所了解;

 

1、程序和进程;

程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。

一个运行着的程序,可能有多个进程。 比如 LinuxSir.Org 所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。


1.1 进程分类;

进程一般分为交互进程、批处理进程和守护进程三类。

值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在Fedora或Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。

[root@localhost~]# chkconfig --level 35 httpd on

由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 LinuxSir.Org ,LinuxSir.Org 的httpd服务器都在运行,等待着用户来访问,也就是等待着任务处理。


1.2 进程的属性;

进程ID(PID):是唯一的数值,用来区分进程;
父进程和父进程的ID(PPID);
启动进程的用户ID(UID)和所归属的组(GID);
进程状态:状态分为运行R、休眠S、僵尸Z;
进程执行的优先级;
进程所连接的终端名;
进程资源占用:比如占用资源大小(内存、CPU占用量);


1.3 父进程和子进程;

他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。

在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;


2、进程管理;

对于Linux进程的管理,是通过进程管理工具实现的,比如ps、kill、pgrep等工具;


2.1 ps 监视进程工具;

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用top工具;


2.1.1 ps 的参数说明;

ps 提供了很多的选项参数,常用的有以下几个;

l  长格式输出;

u  按用户名和启动时间的顺序来显示进程;

j  用任务格式来显示进程;

f  用树形格式来显示进程;

a  显示所有用户的所有进程(包括其它用户);

x  显示无控制终端的进程;

r  显示运行中的进程;

ww 避免详细参数被截断;

我们常用的选项是组合是aux 或lax,还有参数f的应用;

ps aux 或lax输出的解释;

USER      进程的属主;

PID       进程的ID;

PPID  父进程;

%CPU      进程占用的CPU百分比;

%MEM      占用内存的百分比;

NI          进程的NICE值,数值大,表示较少占用CPU时间;

VSZ 进程虚拟大小;

RSS  驻留中页的数量;

WCHAN

TTY  终端ID

STAT 进程状态

 

D    Uninterruptible sleep (usually IO)

R    正在运行可中在队列中可过行的;

S    处于休眠状态;

T    停止或被追踪;

W    进入内存交换(从内核2.6开始无效);

X    死掉的进程(从来没见过);

Z    僵尸进程;

 

<           优先级高的进程

N    优先级较低的进程

L    有些页被锁进内存;

s    进程的领导者(在它之下有子进程);

l    is multi-threaded (using CLONE_THREAD, likeNPTL pthreads do)

+                 位于后台的进程组;

 

WCHAN     正在等待的进程资源;

START 启动进程的时间;

TIME      进程消耗CPU的时间;

COMMAND 命令的名称和参数;


2.1.2 ps 应用举例;

实例一:ps aux 最常用

[root@localhost ~]# ps -aux |more

可以用 | 管道和 more 连接起来分页查看;

[root@localhost ~]# ps -aux >ps001.txt
[root@localhost~]# more ps001.txt

这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看;

实例二:和grep 结合,提取指定程序的进程;

[root@localhost ~]# ps aux |grephttpd
root4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd
apache4190 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4191 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4192 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4193 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4194 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4195 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache4196 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
root4480 0.0 0.0 5160 708 pts/3R+ 12:20 0:00 grep httpd

实例二:父进和子进程的关系友好判断的例子

[root@localhost ~]# ps auxf |grephttpd
root4484 0.0 0.0 5160 704 pts/3S+ 12:21 0:00 \_ grep httpd
root4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache4189 0.0 0.6 24368 4940 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4190 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4191 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4192 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4193 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4194 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4195 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache4196 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd

这里用到了f参数;父与子关系一目了然;


2.2 pgrep

pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;

用法:

#ps 参数选项 程序名

常用参数

-l 列出程序名和进程ID;
-o进程起始的ID;
-n进程终止的ID;

举例:

[root@localhost ~]# pgrep -lo httpd
4557httpd
[root@localhost~]# pgrep -ln httpd
4566httpd
[root@localhost~]# pgrep -l httpd
4557httpd
4560httpd
4561httpd
4562httpd
4563httpd
4564httpd
4565httpd
4566httpd
[root@localhost~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566


3、终止进程的工具 kill 、killall、pkill、xkill;

终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。

另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。


3.1 kill

kill的应用是和ps 或pgrep 命令结合在一起使用的;

kill 的用法:

kill [信号代码]   进程ID

注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;

举例:

[root@localhost ~]# ps auxf |grephttpd
root4939 0.0 0.0 5160 708 pts/3S+ 13:10 0:00 \_ grep httpd
root4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
apache4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4835 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4836 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4837 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4838 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4839 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd

我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;

我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;

[root@localhost ~]# kill 4840 注:杀掉4840这个进程;
[root@localhost~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?
[root@localhost~]# kill 4830 注:杀掉httpd的父进程;
[root@localhost~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?

对于僵尸进程,可以用kill -9 来强制终止退出;

比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

[root@localhost ~]# ps aux |grepgaim
beinan5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root5036 0.0 0.0 5160 724 pts/3S+ 13:24 0:00 grep gaim

[root@localhost~]# pgrep -l gaim
5031gaim
[root@localhost~]# kill -9 5031


3.2 killall

killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。


用法:killall 正在运行的程序名

killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;

举例:

[root@localhost beinan]# pgrep -lgaim
2979gaim
[root@localhostbeinan]# killall gaim


3.3 pkill

pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

应用方法:

#pkill 正在运行的程序名

举例:

[root@localhost beinan]# pgrep -lgaim
2979gaim
[root@localhostbeinan]# pkill gaim


3.4 xkill

xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;

xkill 调用方法:

[root@localhost~]# xkill


4、top 监视系统任务的工具;

和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;


4.1 top 命令用法及参数;

top 调用方法:

top 选择参数

参数:

-b 以批量模式运行,但不能接受命令行输入;
-c显示命令行,而不仅仅是命令名;
-dN 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;
-i禁止显示空闲进程或僵尸进程;
-nNUM 显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;
-pPID 仅监视指定进程的ID;PID是一个数值;
-q不经任何延时就刷新;
-s安全模式运行,禁用一些效互指令;
-S累积模式,输出每个进程的总的CPU时间,包括已死的子进程;


交互式命令键位:

space 立即更新;
c切换到命令名显示,或显示整个命令(包括参数);
f,F增加显示字段,或删除显示字段;
h,?显示有关安全模式及累积模式的帮助信息;
k提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)
i禁止空闲进程和僵尸进程;
l切换到显法负载平均值和正常运行的时间等信息;
m切换到内存信息,并以内存占用大小排序;
n提示显示的进程数,比如输入3,就在整屏上显示3个进程;
o,O改变显示字段的顺序;
r把renice 应用到一个进程,提示输入PID和renice的值;
s改变两次刷新时间间隔,以秒为单位;
t切换到显示进程和CPU状态的信息;
A按进程生命大小进行排序,最新进程显示在最前;
M按内存占用大小排序,由大到小;
N以进程ID大小排序,由大到小;
P按CPU占用情况排序,由大到小
S切换到累积时间模式;
T按时间/累积时间对任务排序;
W把当前的配置写到~/.toprc中;


4.2 top 应用举例;

[root@localhost ~]# top

然后根据前面所说交互命令按个尝试一下就明白了,比如按M,就按内存占用大小排序;这个例子举不举都没有必要了。呵。。。。。。

当然您可以把top的输出传到一个文件中;

[root@localhost ~]# top >mytop.txt

然后我们就可以查看mytop文件,以慢慢的分析系统进程状态;


5、进程的优先级:nice和renice;

在Linux 操作系统中,进程之间是竟争资源(比如CPU和内存的占用)关系。这个竟争优劣是通过一个数值来实现的,也就是谦让度。高谦让度表示进程优化级别最低。负值或0表示对高优点级,对其它进程不谦让,也就是拥有优先占用系统资源的权利。谦让度的值从 -20到19。

目前硬件技术发展极速,在大多情况下,不必设置进程的优先级,除非在进程失控而疯狂占用资源的情况下,我们有可能来设置一下优先级,但我个人感觉没有太大的必要,在迫不得已的情况下,我们可以杀掉失控进程。

nice 可以在创建进程时,为进程指定谦让度的值,进程的优先级的值是父进程SHELL的优先级的值与我们所指定谦让度的相加和。所以我们在用nice设置程序的优先级时,所指定数值是一个增量,并不是优先级的绝对值;

nice 的应用举例:

[root@localhost ~]# nice -n 5 gaim& 注:运行gaim程序,并为它指定谦让度增量为5;

所以nice的最常用的应用就是:

nice -n 谦让度的增量值 程序

renice 是通过进程ID(PID)来改变谦让度,进而达到更改进程的优先级。

renice 谦让度 PID

renice 所设置的谦让度就是进程的绝对值;看下面的例子;

[root@localhost~]# ps lax   |grep gaim

4     0 4437  3419  10  -5 120924 20492 -     S<   pts/0      0:01 gaim

0     0 4530  3419  10 -5   5160   708 -     R<+  pts/0      0:00 grep gaim

 

[root@localhost~]# renice -6  4437

4437: oldpriority -5, new priority -6

 

[root@localhost~]# ps lax   |grep gaim

4     0 4437  3419  14  -6 120924 20492 -     S<   pts/0      0:01 gaim

0     0 4534  3419  11 -5   5160   708 -     R<+  pts/0      0:00 grep gaim

 

 

 

 

 

在你配置到服务的访问之前,你必须理解Linux运行级别。运行级别是一种状态,或模式(mode,它由列在/etc/rc.d/rc<x>.d目录中的服务来定义,其中<x>是运行级别的数字。

RedHat Linux 使用下列运行级别:

·    0—停运

·    1—单用户模式

·    2—没有使用(可由用户定义)

·    3—完全的多用户模式

·    4—没有使用(可由用户定义)

·    5—完全的多用户模式(带有基于X 的登录屏幕)

·    6—重新引导

如果你使用的是文本登录屏幕,你是在运行级别3中操作。如果你使用的是图形化登录屏幕,你是在运行级别5中操作。

默认的运行级别可以通过修改/etc/inittab文件来改变,该文件在接近开头的地方有一行与下面相似:

id:5:initdefault:

把这一行中的数字改成你想要的运行级别。所做改变在系统重新引导之后才会生效。

要立即改变运行级别,使用命令telinit,其后跟随运行级别数字。你必须是根用户才能使用这项命令。

 

 

 

 

Samba的使用:

第一步:先查看是否配置ip   ifconfig

vi /etc/sysconfig/network-scripts/ ifconfig-eth0

如果什么也没有,代表该主机没有设定ip,填入以下信息至该文件:

BOOTPROTO=none

IPADDR=输入ip地址

NETMASK=输入子网掩码

NETWORK=对应于ip地址的网段,必须是同一网段

BROADCAST=网关

ONBOOT=yes

USERCTL=no

PEERDNS=no

TYPE=Ethernet

 

第二步:重启网络,命令:service network restart

(如果已配置ip则无需执行第二步)

 

 

第三步:启动samba,命令:service smb start(或restart—重启、stop—停止)

如想在系统引导时自动启动smb服务器,使用以下命令:

/sbin/chkconfig --level 345 smb on

 

 

第四步:添加共享用户至samba,命令:smbadduser user_name:user_pass

 

第五步:在windows里输入命令:\\linuxip地址

接着输入samba用户名和密码

 

linux里查看windows共享文件命令:samclient\\\\windowsIP地址\\共享目录 -U windows用户名

 

 

 

发送信息给所有用户:wall消息文本

是否接收信息:mesg  y|n

发送信息给特定用户:write用户名    ctrl+c结束发送

查看内存:free

删除用户:userdel  -r uname

添加组:groupadd  gname

添加用户至组:gpasswd  -a uname  gname

从组里删除用户:gpasswd  -d uname  gname

VM_虚拟机安装Linux_9(全图文)

  • 2012年03月30日 10:03
  • 1.69MB
  • 下载

linux内核学习(9)启动全过程概述之内核映像结构

启动过程这块内容还蛮多的,因此得慢慢来分析,在此之前我也收集到了很多资料,这里将这些整理加上自己的一些理解。好不容易啊,总算开始内核源代码之旅了,我们要珍惜这来之不易的这个时刻。 要得到内核结构,我...

ARM9处理器与ARM7处理器比较

  • 2011年08月06日 16:36
  • 376KB
  • 下载

ARM处理器比较:A8/A9

Cortex-A9处理器和Cortex-A8处理器架构解析

ARM9实验程序(比较底层的程序)

  • 2010年08月07日 11:05
  • 256KB
  • 下载

Android解决图片资源比较大的问题--->.9图片的制作和使用

留下备用: 一、什么是9.png:        可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX....

ARM7和ARM9内核性能比较

  • 2009年06月29日 19:57
  • 896KB
  • 下载

ARM9处理器与arm7处理器比较

  • 2010年02月26日 23:31
  • 989KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux9比较全
举报原因:
原因补充:

(最多只允许输入30个字)