linux-系统服务管理
2022-10-07 08:17:38 0 举报
AI智能生成
Linux-服务管理与资源管理 ntp systemctl 进程 线程 top 硬件资源管理
作者其他创作
大纲/内容
server命令
这个命令,linux的命令,大多数都是去机器上找到某个文件,然后读取文件配置,加载功能
是默认去 /etc/init.d/目录下寻找(服务管理脚本文件)
service start/stop network (/etc/init.d/network)
注意,是需要可以执行的脚本,带x权限
使用的格式:service 服务名 启停指令
然后会去读取 /etc/init.d目录下的脚本
很多自己安装的软件需要自己写启停脚本
自己写nginx启停脚本,然后放到/etc/init.d/nginx
然后就可以调用
serivce nginx start
serivce nginx start
systemctl命令
使用对服务进行启停管理
启动
start
停止
stop
重启
restart
重新加载
reload
开就自启(持久化)
enable
禁止开机自启
disable
查询是否持久化(是否开机自启)
is-enabled
注意
如果你使用的是systemctl start nginx 这种形式开启的,及通过systemd这个服务帮你管理nginx
如果直接使用/usr/sbin/nginx去启动的nginx,你是无法使用systemctl去stop程序的
systemctl统一管理脚本目录在 /usr/lib/systemd/system/
我们无论是去使用systemctl 还是 server 都是去调用这个脚本
并且注意,我们敲的服务名都是一个缩写
完整的是 xxx.service
如:nginx.service
scp命令
概念
安全的,远程传输,基于ssh协议认证的传输
就好比你去ssh登录其他人的机器
语法: scp [参数] 源文件 目标地址
注意,如果你是去获取源文件就相当于在别人的电脑上
向其他用户发送资料
scp 源数据的机器 远程机器
# 把自己的 /var/log/整个目录,全发过去到 /tmp/
scp -r /var/log/ root@192.168.0.158:/tmp/
scp -r /var/log/ root@192.168.0.158:/tmp/
参数:-r 递归的复制整个文件夹
向其他用户索取资料
scp 你想要的数据机器 放到那
# 递归的远程 拿别人的文件夹数据
scp -r root@192.168.0.158:/var/log /opt/
scp -r root@192.168.0.158:/var/log /opt/
Linux时间相关命令
通过修改电脑上的时区来对文件修改
查看电脑上的时区文件
#查看电脑是有那些时区文件
[root@localhost ~]# ls /usr/share/zoneinfo
[root@localhost ~]# ls /usr/share/zoneinfo
在系统中发现这两个为同一个文件:
[root@localhost ~]# cat /usr/share/zoneinfo/Asia/Shanghai
[root@localhost ~]# cat /etc/localtime
[root@localhost ~]# cat /usr/share/zoneinfo/Asia/Shanghai
[root@localhost ~]# cat /etc/localtime
将其/etc/locatime 中覆盖写入即可
#修改硬件时间、hwclock命令
[root@localhost ~]# hwclock
[root@localhost ~]# hwclock
timedatectl 命令
修改Linux的日期和时间
[root@localhost system]# timedatectl
[root@localhost system]# timedatectl status
#两条命令一样,显示时间的详细信息
Local time: 一 2022-08-22 20:39:08 CST #(中国时区)当地时间
Universal time: 一 2022-08-22 12:39:08 UTC #世界时间
RTC time: 一 2022-08-22 12:39:08 #RTC时间,本地硬件时钟
Time zone: Asia/Shanghai (CST, +0800) #时区,亚洲上海
NTP enabled: yes #是否启用NTP
NTP synchronized: yes #NTP同步状态
RTC in local TZ: no #本地时区的RTC
DST active: n/a #DST是否激活
[root@localhost system]# timedatectl status
#两条命令一样,显示时间的详细信息
Local time: 一 2022-08-22 20:39:08 CST #(中国时区)当地时间
Universal time: 一 2022-08-22 12:39:08 UTC #世界时间
RTC time: 一 2022-08-22 12:39:08 #RTC时间,本地硬件时钟
Time zone: Asia/Shanghai (CST, +0800) #时区,亚洲上海
NTP enabled: yes #是否启用NTP
NTP synchronized: yes #NTP同步状态
RTC in local TZ: no #本地时区的RTC
DST active: n/a #DST是否激活
参数修改:
status Show current time settings 查看当前状态
set-time TIME Set system time 设置当前的时间
set-timezone ZONE Set system time zone 设置当前的时区
list-timezones Show known time zones 查看系统支持哪些时区
status Show current time settings 查看当前状态
set-time TIME Set system time 设置当前的时间
set-timezone ZONE Set system time zone 设置当前的时区
list-timezones Show known time zones 查看系统支持哪些时区
注意事项:1.只修改时区,并不能修改时间,时间不会变化
设置系统时间(格式:HH:MM:SS)
timedatectl set-time "07:25:46"
timedatectl set-time "07:25:46"
设置系统日期(格式:YYYY-MM-DD)
timedatectl set-time "2021-12-12"
timedatectl set-time "2021-12-12"
设置ntp服务开启(得先安装ntp时间同步服务)
timedatectl set-ntp on/off (true/false)
##该步骤是去ntp自带的文件去同步,文件路径为 /etc
timedatectl set-ntp on/off (true/false)
##该步骤是去ntp自带的文件去同步,文件路径为 /etc
ntpdate
强制更新 ntpdate命令
1.找到时间服务器地址,强制更新即可
[root@yuanlai-0224 ~]# ntpdate -u ntp.aliyun.com
[root@yuanlai-0224 ~]# ntpdate -u ntp.aliyun.com
不太推荐,存在两个问题
1.安全问题:
ntpdate的设置依赖于ntp服务器的安全性
ntpdate的设置依赖于ntp服务器的安全性
2.太过于暴力:
ntpdate是急变,是立即修改系统时间,
非常依赖于时序的程序可能会出错
ntpdate是急变,是立即修改系统时间,
非常依赖于时序的程序可能会出错
ntp时间服务
ntp的作用
它是用来同步网络中各个计算机的时间的协议。
多台服务器,需要部署联调,由于时间不正确,可能导致通信异常。
需要时间的应用。
- 定时任务的执行
- 数据同步,时间不一致等。
- 定时任务的执行
- 数据同步,时间不一致等。
ntp同步的网址
NTP授时网站:<http://www.ntp.org.cn/pool>
在NTP中,定义了时间按照服务器的等级传播,Stratum层的总数限制在15以内
或者使用域名
cn.ntp.org.cn
ntp服务器搭建
先安装ntp软件
[root@localhost ~]# yum install -y ntp
[root@localhost ~]# yum install -y ntp
查看ntp软件信息
[root@yuanlai-0224 ~]# ls /usr/lib/systemd/system/ |grep ntp
[root@yuanlai-0224 ~]# ls /usr/lib/systemd/system/ |grep ntp
找到ntp软件的配置文件
[root@yuanlai-0224 ~]# rpm -ql ntp |grep conf
[root@yuanlai-0224 ~]# rpm -ql ntp |grep conf
.修改ntp的配置文件
vim /etc/ntp.conf
vim /etc/ntp.conf
# 添加ntp的运行日志
logfile /var/log/my_ntp.log
# 记录程序的运行进程号的,可以用于写脚本,读取这个文件,就找到了程序的进程id
pidfile /var/run/ntpd.pid
logfile /var/log/my_ntp.log
# 记录程序的运行进程号的,可以用于写脚本,读取这个文件,就找到了程序的进程id
pidfile /var/run/ntpd.pid
添加新的互联网中ntp服务器
# prefer表示为优先,表示本机优先同步该服务器时间
server ntp.aliyun.com iburst prefer
server cn.pool.ntp.org iburst
# prefer表示为优先,表示本机优先同步该服务器时间
server ntp.aliyun.com iburst prefer
server cn.pool.ntp.org iburst
#添加新的ntp服务器地址,参数解释 iburst,当某一个ntp挂掉时,
向它发送一些数据包,检测是否挂掉。
#如果挂掉,就去下一个的地址进行同步
向它发送一些数据包,检测是否挂掉。
#如果挂掉,就去下一个的地址进行同步
查看时间同步信息
[root@localhost ~]# ntpstat
[root@yuchao-linux01 ~]# ntpq -p
-p 显示时间服务器列表
-p 显示时间服务器列表
如果有[*] 代表目前正在使用当中的上层NTP服务器。
一些时间其余
Main Topic
子主题
Main Topic
子主题
Main Topic
Main Topic
子主题
Main Topic
子主题
Linux资源管理
进程资源管理
什么是程序
人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
程序是数据和指令的集合。未运行
当程序跑起来了,占用了一定的资源就称之为进程
什么是进程
操作系统的0号进程
0号进程会创建一堆内核级进程,提供操作系统运行
且用ps -ef 查看下为[]括号扩起内容
用户级别的1号进程
创建子进程shhd服务
ssh客户端连接进程
用户bash进程 /bin/bash
用户使用bash执行的其他进程
进程进阶难点
父子进程的关系
系统运行时,就产生了0号进程,然后其他进程都是0号进程创建的子进程
注意儿子进程可以当成父进程,再去创建儿子进程
孤儿进程
.当父亲进程挂了,导致儿子进程成了孤儿
孤儿进程会被系统的1号进程收养,并且有1号进程来回收
僵尸进程
.父亲进程创建出子进程后,如果子进程先挂了
而父进程不知道儿子进程挂了,资源一直被占用
进程查看
ps
主要是查看服务器的进程信息
Linux风格的组合参数,一般都是携带短横线的
-e # 显示所有进程
-f # 显示进程详细
-p # 指定pid,显示其信息,如 ps -fp 2609 #需要和-f结合使用,查看信息
-C # 指定进程的名字查看,如ps -fC sshd
-U # 指定用户名,查看用户进程信息 ps -Uf yuchao01
-e # 显示所有进程
-f # 显示进程详细
-p # 指定pid,显示其信息,如 ps -fp 2609 #需要和-f结合使用,查看信息
-C # 指定进程的名字查看,如ps -fC sshd
-U # 指定用户名,查看用户进程信息 ps -Uf yuchao01
ps
查看当前用户终端的进程
ps -ef
ps -ef | grep 进程名或id号
结合管道符,找出自己需要的程序应用
去掉grep显示
由于每一次grep都会产生一个临时进程
ps -ef | grep nginx | grep -v 'grep'
-v 参数:结果取反,显示不包含的行
unix操作系统下,查看进程,用如下不带短横线的参数
a # 显示所有终端、所有用户执行的进程
u # 以用户显示出进程详细信息
x # 显示操作系统所有进程信息
f # 显示进程树形结构
o # 格式化显示进程信息,指定如pid
k # 对进程属性排序,如k %mem ,正序排序 ,k -%mem 逆序
--sort,再进行排序,如 --sort %mem 根据内存使用率显示
a # 显示所有终端、所有用户执行的进程
u # 以用户显示出进程详细信息
x # 显示操作系统所有进程信息
f # 显示进程树形结构
o # 格式化显示进程信息,指定如pid
k # 对进程属性排序,如k %mem ,正序排序 ,k -%mem 逆序
--sort,再进行排序,如 --sort %mem 根据内存使用率显示
ps aux
ps axfo pid,cmd,%cpu,%mem
指定字段格式化显示结果
pstree
作用、以树状图,显示父进程和子进程的关系
可能需要安装 [root@localhost ~]# yum install -y psmisc
常用的参数
-p 显示pid
-u 显示用户切换
-u 显示用户切换
pstree -p
pidof
指定进程名,显示出其pid
[root@localhost ~]# pidof nginx
64351 64350 6434
64351 64350 6434
系统整体资源的查看
top
z::打开,关闭颜色
M(大写):表示将结果按照内存(MEM)从高到低进行降序排列;
m(小写):切换内存memmory的显示格式。
P(大写):,表示将结果按照CPU 使用率从高到低进行降序排列;
1 :当服务器拥有多个cpu 的时候可以使用“1”快捷键来切换是否展示显示各个cpu 的详细信息;
q:退出
M(大写):表示将结果按照内存(MEM)从高到低进行降序排列;
m(小写):切换内存memmory的显示格式。
P(大写):,表示将结果按照CPU 使用率从高到低进行降序排列;
1 :当服务器拥有多个cpu 的时候可以使用“1”快捷键来切换是否展示显示各个cpu 的详细信息;
q:退出
htop
需要安装
yum install htop -y
htop就是比top更好用的工具,支持鼠标点击,选择进程。
有很多的交互,使用方便直观,但是快捷键可能有冲突。
glances
同样是一个资源查看器,使用python开发的,也比较好用
yum install -y glances
安装
适应于多种系统
Windows
mac
Linux
功能更加的齐全
除了上面的还包含了ip 网络的io 磁盘的读写
由于使用python开发,可以自己修改调整
glances还提供了web可视化界面
进程文件资源管理
lsof [list open file] :是一个列出当前系统打开文件的工具
常用参数
-c # 指定进程名,打开了哪些系统文件,如lsof -c nginx
-i # 显示符合条件的进程,如ipv[46][protocol][@host|addr][:service|port]
-p # 显示指定pid打开的文件
-u # 显示指定用户uid打开的文件,以及具体进程信息
+d # 显示文件夹下被打开的文件有哪些,如 lsof +d /var/log/nginx/
+D # 递归列出目录下哪些文件被进程打开
-n # 不显示主机名,直接显示ip
-P # 不显示端口名,直接显示端口号
-s # 列出文件大小
-c # 指定进程名,打开了哪些系统文件,如lsof -c nginx
-i # 显示符合条件的进程,如ipv[46][protocol][@host|addr][:service|port]
-p # 显示指定pid打开的文件
-u # 显示指定用户uid打开的文件,以及具体进程信息
+d # 显示文件夹下被打开的文件有哪些,如 lsof +d /var/log/nginx/
+D # 递归列出目录下哪些文件被进程打开
-n # 不显示主机名,直接显示ip
-P # 不显示端口名,直接显示端口号
-s # 列出文件大小
# 直接输入lsof,显示当前用户打开的所有文件,过滤出你需要查找的文件,对应的进程
[root@yuchao-linux01 ~]# lsof |grep access.log
[root@yuchao-linux01 ~]# lsof |grep access.log
# 查看占用文件的进程 lsof 文件
[root@yuchao-linux01 log]# lsof /var/log/nginx/access.log
[root@yuchao-linux01 log]# lsof /var/log/nginx/access.log
# 查看指定pid号(父进程)打开了什么文件
[root@yuchao-linux01 log]# lsof -p $(cat /var/run/nginx.pid)
[root@yuchao-linux01 log]# lsof -p $(cat /var/run/nginx.pid)
lsof -p id | grep log #查看对应id打开的文件
# 查看指定程序名,打开的文件
[root@yuchao-linux01 log]# lsof -c nginx
[root@yuchao-linux01 log]# lsof -c nginx
当我们不小心删掉了日志文件,但是进程没有断开,此时文件信息还能写入到日志,保存在了内存之中
可以利用lsof 找到那个文件,进行修复
在一个特殊的目录下 /proc 有一个与进程同名的文件夹
再在下面有一个fd文件夹
使用ll 查看详细信息
[root@localhost ~]# ls -l /proc/64887/fd/*
此时可以看见这个
l-wx------ 1 root root 64 8月 25 22:13 /proc/64887/fd/4 -> /opt/tngx233/logs/access.log
此时只需要将该信息重新写入到你对应的文件中即可完成数据的恢复
杀死进程
kill 命令
命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,
然后系统内核根据收到的信号类型,对指定进程进行相应的操作
然后系统内核根据收到的信号类型,对指定进程进行相应的操作
[root@yuchao-tx-server ~]# kill -l
显示详细的命令信息
显示详细的命令信息
常用的3个信号
15
15) SIGTERM
kill 默认的信号,告诉程序你可以结束了
优雅的杀死
9
9) SIGKILL
强制终止,危险的信号,可能会导致程序出现不可预期的错误
遇见杀不死的进程,只能通过这个信号来杀死
1
1) SIGHUP
无须关闭进程,重新加载其配置文件,如reload操作
了解的
2 中断,通常是ctrl+c发出此信号 SIGINT
3 退出,通常是ctrl + \ 发出信号 SIGQUIT
20 暂停进程,通常是ctrl + z 发出信号 SIGTSTP
3 退出,通常是ctrl + \ 发出信号 SIGQUIT
20 暂停进程,通常是ctrl + z 发出信号 SIGTSTP
使用jobs命令可以查看后台有那些程序暂停了
批量根据进程名来进行杀死进程,很容易出现误杀,导致其他程序运行出错
killall
作用:通过程序的==进程名==来杀死==一类==进程
pkill
pkill更省事了,直接根据进程名字干掉进程
程序的后台运行
命令集合
command & # 未启动的command放入后台去运行
jobs # 查看后台进程列表
ctrl + z # 暂停进程
bg # 程序放入后台运行,和 & 一样
fg # 将后台任务放入前台执行
command & # 未启动的command放入后台去运行
jobs # 查看后台进程列表
ctrl + z # 暂停进程
bg # 程序放入后台运行,和 & 一样
fg # 将后台任务放入前台执行
前台运行
会占用你的终端,无法继续使用
如果终端异常关闭,会导致程序自动退出
如大文件解压
后台运行
& 符号
命令的结尾加上该符号即可
如 ping baidu.com > /dev/null &
注意,如果你的命令,会输出很多信息,一般都是定向到文件中,结合后台命令
注意:只是帮助进程,在当前的ssh会话中,在后台运行
当ssh会话断开,进程依然会丢失
jobs 命令
可以看到当前会话的后台任务列表
[root@liuxinghan ~]# jobs
[1]+ Running ping baidu.com > /etc/null &
[1]+ Running ping baidu.com > /etc/null &
ctrl + z
把前台的任务中断,暂停运行,放入后台
bg
把后台的程序,继续运行起来,和&用法一样
在后台运行
fg
将已经在后台的程序,放入前台继续执行
jobs 编号
在前台运行,占用窗口
nohup命令
真的让进程在后台执行,即使会话断开,进程也不丢失,它也是结合&符号使用,实现命令后台执行
简单的使用
nohup 你需要执行的命令 &
##后面会结合重定向写入
nohup 你需要执行的命令 &
##后面会结合重定向写入
nohup ping baidu.com > /tmp/nohup_ping.log 2>&1 &
数据流
stdin
标准输入、0
一般是键盘输入数据
如cat 等待终端的键盘输入
stdout
标准输出、1
程序执行结果,输出到终端
如 ls 目录
stderr
标准错误输出,代号是2
程序执行结果,输出到终端
当有错误的输出时,对脚本的运行有很大的干扰,很致命的,可能会导致运行出错
数据重定向
输入重定向
输入重定向是指把命令(或可执行程序)的标准输入,重定向到指定的文件中。
比如 cat查看文件内容
#常常用在数据库的数据导入
mysql < /opt/back.sql
mysql < /opt/back.sql
输出重定向(重要)
使用 “ > ”符号,将标准输出重定向到文件中。形式为:命令>文件名
把命令的执行结果,覆盖输出到文件中,多次执行,多次覆盖
使用“ >> ”符号,将标准输出结果追加到指定文件后面。形式为:命令>>文件名
将命令的正确结果追加写入到一个文件中,原文件内容保留
使用“ 2> ”符号,将标准错误输出重定向到文件中。形式为:命令 2> 文件名
使用“ 2>&1 ”符号或“ &> ”符号,将把标准错误输出stderr重定向到标准输出stdout
2>&1 ,将stderr 当作stdout去处理,
可以将程序的正确日志和错误日志都输入到同一个文件中,防止程序出错时的日志,打印在终端上
简写未 &> ,可以写在中间,但是不建议使用,容易出错
使用“ >/dev/null ”符号,将命令执行结果重定向到空设备中,也就是不显示任何信息。
空设备文件,黑洞文件,不输出结果
内存资源管理
free 命令
-m 表示以mb为单位查看
-h 以可读形式显示容量
#会自动的按合适的单位显示
缓存区
cache
Cache,==缓存==,Cached是给==读取数据==时加速的
cache解决的时间问题,提高数据读取速度
把读取磁盘而来,的数据保存在内存中,再次读取
缓冲区
buffer
CPU压力负载
stress 命令
作用:进行cpu的压力测试
安装 yum install stress -y
-c, --cpu N 产生 N 个进程,每个进程都反复不停的计算随机数的平方根,
如果选择的超过了cpu的上限,就是这些程序去分摊,整个的cpu
如果选择的超过了cpu的上限,就是这些程序去分摊,整个的cpu
-t, --timeout N 在 N 秒后结束程序
使用例: stress --cpu 1 --timeout 60
查看cpu的使用
top 命令查看资源的动态
uptime 命令 查看当前时间点的cpu资源
lscpu
直接查看cpu的使用情况
以上的命令都是去读取
/proc/cpuinfo 该文件
磁盘资源管理
磁盘空间的查看
df 命令
查看磁盘的空间(disk free)
df -h
io 监控
iotop命令
一个用来监视磁盘I/O使用状况的top类工具。
网络资源管理
了解端口的概念
iftop命令
安装
yum install -y iftop
yum install -y iftop
作用:网络流量监控
用起来和iotop一模一样,动态的查看服务器的流量情况
查看Linux机器的端口
netstat
作用:查看网络连接状态
普遍用法 [root@localhost ~]# netstat -tunlp
ss
作用和使用同上
但是功能更加的强大
并且性能远比netstat强悍,适合用于高并发服务器查看
其实就是去看看进程是否运行某端口
Linux从服务端查看
进程,进程号信息
ps -ef | grep pid/程序名
看程序的端口是否允许
nststat -tnulp | grep 程序名/端口
从客户端验证是否启动
浏览器访问该网站的域名即可
如nginx 网站程序 Browser/server
浏览器/服务器模式
IP地址的查看
ifconfig
ip addr show
0 条评论
下一页