卡卡笔记之Linux Service 服务管理
独立服务程序
Xinetd服务程序
负责管理系统中不频繁使用的服务,这些进程在有请求时才由xinetd服备负责启动运行,一旦完成服务请求服务程序就结束运行,这种机制的设计目的是为了有效地减少对系统资源的占用率.
负责管理系统中不频繁使用的服务,这些进程在有请求时才由xinetd服备负责启动运行,一旦完成服务请求服务程序就结束运行,这种机制的设计目的是为了有效地减少对系统资源的占用率.
Xinetd配置文件内容
[root@localhost ~]# cat /etc/xinetd.conf
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
[root@localhost ~]# cat /etc/xinetd.conf
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d // includedir用来设置xinetd的启动配置文件目录
Xinetd启动配置目录
该目录中xinetd管理的每个服务都有独立的配置文件,文件名与服务名相同
[root@localhost ~]# ls /etc/xinetd.d/
该目录中xinetd管理的每个服务都有独立的配置文件,文件名与服务名相同
[root@localhost ~]# ls /etc/xinetd.d/
若要查看krb5-telnet服务的启动配置文件
[root@localhost ~]# more /etc/xinetd.d/krb5-telnet
# default: off
# description: The kerberized telnet server accepts normal telnet sessions,
# but can also use Kerberos 5 authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/telnetd
log_on_failure += USERID
[root@localhost ~]# more /etc/xinetd.d/krb5-telnet
# default: off
# description: The kerberized telnet server accepts normal telnet sessions,
# but can also use Kerberos 5 authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/telnetd
log_on_failure += USERID
若要查看Time服务的启动配置文件
[root@localhost ~]# more /etc/xinetd.d/time
# default: off
# description: An RFC 868 time server. This protocol provides a \
# site-independent, machine readable date and time. The Time \
# service sends back to the originating source the time in \
# seconds since midnight on January first 1900. This is the \
# tcp version.
service time
{
disable = yes
type = INTERNAL
id = time-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
[root@localhost ~]# more /etc/xinetd.d/time
# default: off
# description: An RFC 868 time server. This protocol provides a \
# site-independent, machine readable date and time. The Time \
# service sends back to the originating source the time in \
# seconds since midnight on January first 1900. This is the \
# tcp version.
service time
{
disable = yes
type = INTERNAL
id = time-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
服务状态:
实现方法:chkconfig –list service_name
功能:查看系统中服务启动状态
[root@localhost ~]#chkconfig - -list
实现方法:chkconfig –list service_name
功能:查看系统中服务启动状态
[root@localhost ~]#chkconfig - -list
[root@localhost ~]#chkconfig - -list network
[root@localhost ~]#chkconfig network
重新启动运行的服务方法:
[root@localhost ~]#service xinetd restart
[root@localhost ~]#service xinetd restart
Line command 上实现对话模式的服务管理:
主法:
[root@localhost ~]# ntsysv
注:Ntsysv可以设置所有服务程序的启动选项,包括受xinetd服务管理的服务,但是它只能设置当前运行级别的启动状态
Linux Process 进程管理
主法:
[root@localhost ~]# ntsysv
注:Ntsysv可以设置所有服务程序的启动选项,包括受xinetd服务管理的服务,但是它只能设置当前运行级别的启动状态
Linux Process 进程管理
Free //显示可用的内存空间
[root@localhost ~]# free
Mem行解释:
Mem行的used/free与(-/+ buffers/cache)行的 used/free区别:
Mem行是从OS的角度——对于OS,buffers/cached 都是属于被使用,其中包括:“内核(OS)使用”+“Application(X, oracle,etc)使用”+“buffers+cached”
-/+ buffers/cache行所指的是从应用程序角度——对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需要用到内存的时候,buffer/cached会很快地被回收。
[root@localhost ~]# free
Mem行解释:
Mem行的used/free与(-/+ buffers/cache)行的 used/free区别:
Mem行是从OS的角度——对于OS,buffers/cached 都是属于被使用,其中包括:“内核(OS)使用”+“Application(X, oracle,etc)使用”+“buffers+cached”
-/+ buffers/cache行所指的是从应用程序角度——对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需要用到内存的时候,buffer/cached会很快地被回收。
buffers与cached的区别:
- buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages;
也就是说,buffers是用来存储,目录里面有什么内容,权限等等
= cached是用来给文件做缓冲,即cached直接用来记忆我们打开的文件
Uptime //显示系统负载程度
[root@localhost ~]# uptime
- buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages;
也就是说,buffers是用来存储,目录里面有什么内容,权限等等
= cached是用来给文件做缓冲,即cached直接用来记忆我们打开的文件
Uptime //显示系统负载程度
[root@localhost ~]# uptime
W //显示当前主机中已登录的所有用户,以及用户当年所执行的命令
[root@localhost ~]# w
[root@localhost ~]# w
Jobs //当前控制台中的后台进程
[root@localhost ~]#jobs
[root@localhost ~]#jobs
Fg //恢复指定的后台进程到前台
[root@localhost ~]#jobs
[root@localhost ~]#fg 2
[root@localhost ~]#jobs
[root@localhost ~]#fg 2
Ps //列出进程
[root@localhost ~]# ps //Process status
ps 选项参数
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
[root@localhost ~]# ps //Process status
ps 选项参数
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
[root@localhost ~]# ps -aux
----------------------------------------------------------------------------------------------------------------------
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 僵尸进程;
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
----------------------------------------------------------------------------------------------------------------------
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
----------------------------------------------------------------------------------------------------------------------
[root@localhost ~]# ps aux |grep httpd // 与grep 结合,提取指定程序的进程
[root@localhost ~]# ps auxf |grep httpd // 父进和子进程关系
[root@localhost ~]# ps auxf |grep httpd // 父进和子进程关系
Pgrep判断程序是否正在运行
-l 列出程序名和进程ID
-o 进程起始的ID
-n 进程终止的ID
[root@localhost ~]# pgrep –lo httpd //
[root@localhost ~]# pgrep –ln httpd //
[root@localhost ~]# pgrep -l httpd //
更详细显示进程列表
[root@localhost ~]# ps –l //Long
-l 列出程序名和进程ID
-o 进程起始的ID
-n 进程终止的ID
[root@localhost ~]# pgrep –lo httpd //
[root@localhost ~]# pgrep –ln httpd //
[root@localhost ~]# pgrep -l httpd //
更详细显示进程列表
[root@localhost ~]# ps –l //Long
显示自已的进程数据
[root@localhost ~]# ps –u //User
[root@localhost ~]# ps –u //User
显示指指定用户的进程数据
[root@localhost ~]# ps -U oracle
[root@localhost ~]# ps -U oracle
查看后台进程
[root@localhost ~]# ps –x
Top //显示CPU利用率,进程状态,内存使用情况
[root@localhost ~]#top
[root@localhost ~]# ps –x
Top //显示CPU利用率,进程状态,内存使用情况
[root@localhost ~]#top
Free //用于显示系统内存使用情况,包括内存总量、已使用内存数量、空间内存数量等信息.
[root@localhost ~]# free
[root@localhost ~]# free
终止系统中的进程
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。
为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。
为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
/Kill进程
如果进程运行过程中出现死机或消耗了太多的系统资源,如内存数量及CPU时间,就可以使用Kill命令将指定的信息发送到该进程
[root@localhost ~]# kill -l
如果进程运行过程中出现死机或消耗了太多的系统资源,如内存数量及CPU时间,就可以使用Kill命令将指定的信息发送到该进程
[root@localhost ~]# kill -l
若要终止PID=16525的运行:
[root@localhost ~]#kill 16525
[root@localhost ~]#kill 16525
由于有些程序会捕捉某些信号,所以在直接指定PID,但却不能终止其进程时,可以使用-9参数发出SIGKILL信号.
[root@localhost ~]#kill -9 16525 式 // 9 SIGKILL
[root@localhost ~]#kill -9 16525 式 // 9 SIGKILL
僵尸进程,用kill -9 来强制终止退出
[ root@localhost ~]# ps aux |grep gaim
[root@localhost ~]# pgrep -l gaim5031 gaim
[root@localhost ~]# kill -9 5031
[ root@localhost ~]# ps aux |grep gaim
[root@localhost ~]# pgrep -l gaim5031 gaim
[root@localhost ~]# kill -9 5031
若还是无法终止,则使用-15参数发出SIGTERM信号
[root@localhost ~]#kill -15 16525 // 15 SIGTERM
[root@localhost ~]#kill -15 16525 // 15 SIGTERM
1.停止系统中的进程运行
[root@localhost ~]#ps|grep vi
[root@localhost ~]#kill 7740
[root@localhost ~]#ps|grep vi
[root@localhost ~]#kill 7740
1. 强制停止系统中的进程运行
[root@localhost ~]#ps|grep vi
[root@localhost ~]#kill -9 7740
[root@localhost ~]#ps|grep vi
[root@localhost ~]#kill -9 7740
/Killall 如何系统中存在相同名称的多个进程则这些进程将全部结束
1. 停止指定名称的进程
[root@localhost ~]#ps|grep vi
[root@localhost ~]#killall vi
1. 停止指定名称的进程
[root@localhost ~]#ps|grep vi
[root@localhost ~]#killall vi
2. 强制停止指定名称的进程
[root@localhost ~]#ps|grep vi
[root@localhost ~]#killall -9 vi
[root@localhost ~]#ps|grep vi
[root@localhost ~]#killall -9 vi