Linux系统进程及服务的控制

Linux进程简介

进程就是系统未完成并且正在进行的工作 程序( program)
通常为二进制程序放置在存储媒介中(如硬盘、光盘、软盘、磁带等),物理文件的形式存在 进程(process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给子这个内存内的单元一个标识符(PD),可以说,进程就是一个正在运行中的程序。

查看进程ps

1)图形方式查看

gnome-system-monitor

进程查看命令 ps

A所有进程
u在环境中的所有进程,不包函环境信息
a显示进程用户信息
x显示当前环境中运行的进程,包含环境信息
f列出系统中所有运行包含tty输出设备
e显示进程的详细信息(系统资源的调用

ps aux
在这里插入图片描述

ps ef

在这里插入图片描述

pstree

在这里插入图片描述

ps常用组合

ps aux显示系统中所有进程并显示进程用户
ps ef显示进程详细信息并显示进程父子关系
ps ax显示当前系统中的所有进程
pstree显示当前系统的进程树
ps显示出来的数据
F代表这个进程标志( process flags),说明这个进程的权限,常见号码有
R该进程正在运行中
S该进程目前正在睡眠状态(idle),但可以被唤醒( signal)
D不可被唤醒的睡眠状态,通常这个进程可能在等待O的情况
T停止状态(stop),可能是在工作控制(后台暂停)或除错( traced)状态
Z:“僵尸”状态,进程已经终止但却无法被删除至内存外
/UID/PID代表此进程被该UID/所拥有进程的PID号码/此进程的父进程PD号码
C代表CPU使用率,单位为百分比
PINIriority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程 越快被CPU执 行
TTY登录者的终端机位置,若为远程登录则使用动态终端接口
TME使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间。
CMD就是 command的缩写,造成此程序的触发进程的命令为何

显示进程指定信息

ps -o xxx显示进程的指定信息
comm进程名称
user进程所有人
group进程所有组
%cpu进程cpu使用率
%mem进程使用率
pid进程id
nice进程优先级

在这里插入图片描述

ps进程排序

ps ax  --sort=
		+%cpu|-%cpu	按照CPU的使用率排序
		+%mem|-%mem

在这里插入图片描述

stat中显示的信息 
S进程状态
I内存中有锁定空间
N优先级低
<优先级高
+前台运行
s顶级进程

查看进程优先级

进程的优先级范围     -2019

优先级查看
ps ax -o pid,nice,comm

在这里插入图片描述

指定某个优先级开启进程
nice -n 优先级数字	进程名称
nice -n -5 vim 	开启vim并且指定程序优先级为-5 (之前没有)

在这里插入图片描述

改变已有进程优先级
reince -n 优先级数字	进程pid
renice -n -5 1806改变1806进程的优先级为-5

在这里插入图片描述

环境中进程的前后台调用

jobs查看被打入环境后台的进程
ctrl+z把占用终端的进程打入后台
fg jobsnum把后台进程调回前台
bg jobsnum把后台暂停的进程运行
comm &让命令直接在后台运行

进程信号

常用信号等级
man 7 signal	查看信号详细信息
1进程重新加载配置
2删除进程在内存中的数据
3删除鼠标在内存中的数据
9强行结束单个进程(不能被阻塞)
15正常关闭进程 (可能会被阻塞)
18运行暂停的进程
19暂停某个进程 (不能被阻塞)
20把进程打入后台 (可以被阻塞)
结束进程
kill 	-9 	进程pid  #结束进程
killall -9	进程名字  #结束这个名字的所有进程 
pkill	-u student -信号
先打开三个vim并打入后台

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此时查看最后10行的进程

在这里插入图片描述

删除pid为2868的进程后再次查看,可以看到已经没有了

在这里插入图片描述

当执行killall命令后,可以看到vim进程全部消失

在这里插入图片描述

连续三次切换用户,用监控命令查看,再pkill执行命令,进程全部被关闭

在这里插入图片描述
在这里插入图片描述

进程的动态监控

top

l显示cpu每个核的负载
s调整刷新频率
cCPU负载排序
m内存使用量排序
h查看帮助
u查看指定用户进程
k对指定进程发起信号
q退出

在这里插入图片描述

控制服务

systemd

它的设计目标是,为系统的启动和管理提供一套完整的解决方案。
根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。
使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1), 其他进程都是它的子进程。

systemctl --version查看 Systemd 的版本。
  • 优点是功能强大,使用方便,
  • 缺点是体系庞大,非常复杂。

在这里插入图片描述

systemctl服务控制命令
systemctl status sshd查看服务状态,inactive(不可用),active(可用)
systemctl start sshd开启服务
systemctl stop sshd关闭服务
systemctl restart sshd重启服务
systemctl reload sshd重新加载服务配置
systemctl enable sshd设定服务开机启动
systemctl disable sshd列出已经开启服务当前状态
systemctl list-units列出所有服务开机启动的状态
systemctl list-dependencies列出服务的倚赖
systemctl set-default multi-user.target设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target设定系统启动级别为图形模式
is-active目前有没有正在运行中。
is-enable开机时有没有默认要启用这个 unit。
kill不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show列出 unit 的配置。
mask注销 unit,注销后你就无法启动这个 unit 了。
unmask取消对 unit 的注销。

sysctl

  • sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。

  • sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。

  • 用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。

命令参数
-w临时改变某个指定参数的值,
-a显示所有的系统参数
-p从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

运行原理

在系统启动时,systemd-sysctl会根据以下的配置文件读取sysctl内核参数:
/etc/sysctl.d/*.conf
/run/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
配置文件的格式是一系列"KEY=VALUE"(每行一对)。
空格和以"#“或”;"开头的行都会被忽略。
配置文件依次从/etc/,/run/,/usr/lib目录中读取,配置文件的名称必须符合filename.conf格式。对于不同目录下的同名配置文件,仅以优先级最高的目录中的那一个为准。
具体说来,就是/etc/的优先级最高,/run/的优先级居中,/usr/lib的优先级最低。

启用IP路由转发功能

命令行只是临时设置
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1    

永久保留配置,可以修改/etc/sysctl.conf文件,
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1 
sysctl -p  重新加载系统参数
可以使用sysctl修改系统变量,也可以通过编辑sysctl.conf文件来修改系统变量。
sysctl变量的设置通常是字符串、数字或者布尔型(布尔型有1来表示yes,用0来表示no)。

sysctl -w kernel.sysrq=0
sysctl -w kernel.core_uses_pid=1
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_keepalive_time=3600
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_sack=1
net.ipv4.ip_forward = 0禁用包过滤功能
net.ipv4.conf.default.rp_filter = 1启用源路由核查功能
net.ipv4.conf.default.accept_source_route = 0禁用所有IP源路由
kernel.sysrq = 0使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
kernel.core_uses_pid = 1控制core文件的文件名是否添加pid作为扩展
net.ipv4.tcp_syncookies = 1开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
kernel.msgmnb = 65536每个消息队列的大小(单位:字节)限制
kernel.msgmax = 65536整个系统最大消息队列数量限制
kernel.shmmax = 68719476736单个共享内存段的大小(单位:字节)限制,计算公式64G10241024*1024(字节)
kernel.shmall = 4294967296所有内存大小(单位:页,1页 = 4Kb),计算公式16G10241024*1024/4KB(页)
net.ipv4.tcp_max_tw_buckets = 6000timewait的数量,默认是180000
net.ipv4.tcp_sack = 1开启有选择的应答
net.ipv4.tcp_window_scaling = 1支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
net.ipv4.tcp_rmem = 4096 131072 1048576TCP读buffer
net.ipv4.tcp_wmem = 4096 131072 1048576TCP写buffer
net.core.wmem_default = 8388608为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
net.core.wmem_max = 16777216为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
net.core.rmem_default = 8388608为TCP socket预留用于接收缓冲的内存默认值(单位:字节)
net.core.rmem_max = 16777216为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
net.core.netdev_max_backlog = 262144每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.somaxconn = 262144web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.ipv4.tcp_max_orphans = 3276800系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)
net.ipv4.tcp_max_syn_backlog = 262144记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
net.ipv4.tcp_timestamps = 0时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
net.ipv4.tcp_synack_retries = 1为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_syn_retries = 1在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_tw_recycle = 1开启TCP连接中time_wait sockets的快速回收
net.ipv4.tcp_tw_reuse = 1开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
net.ipv4.tcp_mem = 94500000 915000000 9270000001st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
net.ipv4.tcp_fin_timeout = 15如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time = 30表示当keepalive起用的时候,TCP发送keepalive消息的频度(单位:秒)
net.ipv4.ip_local_port_range =2048 65000 对外连接端口范围
fs.file-max = 102400表示文件句柄的最大数量
可以通过/etc/sysctl.conf控制和配置Linux内核及网络设置。

# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1  
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1   

# 开启SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1   

# 开启并记录欺骗,源路由和重定向包
net.ipv4.conf.all.log_martians = 1   
net.ipv4.conf.default.log_martians = 1

# 处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# 不充当路由器
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# 开启execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# IPv6设置
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

# 优化LB使用的端口

# 增加系统文件描述符限制
fs.file-max = 65535

# 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768
kernel.pid_max = 65536

# 增加系统IP端口限制
net.ipv4.ip_local_port_range = 2000 65000

# 增加TCP最大缓冲区大小
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608

# 增加Linux自动调整TCP缓冲区限制
# 最小,默认和最大可使用的字节数
# 最大值不低于4MB,如果你使用非常高的BDP路径可以设置得更高

# Tcp窗口等
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_window_scaling = 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值