Linux学习纪要1.0
2022-04-16 17:52:28   0  举报             
     
         
 AI智能生成
  mark一下
    作者其他创作
 大纲/内容
  第25天    
     1. 进程前后台切换知识    
     1.为什么要学习进程的前后台切换    
     远程拷贝大文件,持续时间长的操作。为防止中断,一般要放在后台运行。  
     有些进程需要定时执行  
     需要一直运行(守护进程)  
     2.常见的前后台切换的命令    
     ctrl+z: 暂停当前进程,并放在后台。  
     bg:放入后台  
     fg:拿回前台  
     jobs:查看当前队列,含ID  
     kill %id:  
     3. 需要放后台的内容    
     1. 启动命令(默认放在后台),加参数放到后台  
     2.shell 脚本(命令)放后台  
     3.这些需要放在后台的,需要在命令的结尾加“&” 符号:脚本或者命令要全路径  
     4.把程序放在后台的三种方法    
     ctrl+z,bg, fg,jobs,kill %id    
     临时用  
     命令以“&” 结尾    
     后台运行脚本用  
     使用screen    
     管理员常用    
     1. screen -S tmp_name    
     创建一个后台屏幕    
     退出:ctl+a+d,或者关闭窗口  
     2.screen -list    
     展示已有的后台任务  
     3. screen - r tmp_name    
     从后台拉回创建的屏幕  
     2. strace命令及生产经验思维
    
     系统调用:系统为应用程序提供的接口连接接口    
     进程执行:调用很多接口,接口如果异常,进程就会不正常  
     strace:跟踪进程的系统调用  
     命令形式:    
     strace -f 命令  
     strace -p 进程号  
     重要的参数    
     -o :指定日志写入的文件  
     -f :跟踪目标进程,以及目标进程创建的所有子进程。  
     -p :pid 指定要跟踪的进程id  
     -t ,-tt,-ttt: 指定时间信息的精细度  
     -e :expr 输出过滤器,通过表达式,可以过滤掉你不想要的输出。  
     企业案例:    
     php进程cpu百分百了         
    - pgrep 进程, 获取进程号
 2.strace -p 进程号, 发现问题
  
     3. ltrace与strace的关系    
     ltrace:跟踪进程的库函数调用  
     strace:跟踪进程的每个系统调用  
     4. 排查问题的过程    
     1. 找出有问题的进程:top ps pstree pgrep  
     2. 调整优先级:nice  renice  
     3.杀进程:kill killall pkill  
     4.进程前后台切换:    
     ctrl+z,bg,fg,jobs,kill %id  
     & 后台运行  
     screen    
     保持操作的会话,使之不中断。运维人员用  
     5.进程在干什么:strace ltrace  gdb  
     第26天    
     一、平均负载:load average    
     查看命令    
     w  
     uptime    
     最简洁的  
     top  
     cat /proc/loadavg  
     是什么:    
     是衡量系统繁忙的一个综合指标    
     一个进程产生要占用很多资源    
     pid  
     内存  
     文件描述符  
     cpu  
     磁盘  
     主要是cpu,io的繁忙程度    
     ps ,top, sar :看cpu的繁忙  
     iostat,iotop:看磁盘繁忙  
     平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
系统平均负载被定义为在特定时间间隔内【cpu运行队列中的平均进程数】
    
    系统平均负载被定义为在特定时间间隔内【cpu运行队列中的平均进程数】
 可运行状态进程    
     指正在使用cpu或者正在等待cpu的进程  
     ps命令看到处于R状态的进程。  
     不可中断进程    
     (你做什么事情的时候是不能打断的?)系统中常见的是等待硬件设备I/O  
     ps命令中看到的D状态的进程  
     平均负载的指标说明:    
     根据cpu的核数,来判断负载    
     例如:2颗4核cpu(总共8核),负载为8的时候为临界点(系统开始慢的临界点)    
     一般监控要预留30%,即8x70%=5.6的时候为经验值的临界点,需要预警  
     平均负载的指标:    
     1分钟:    
     cpu处理进程1分钟内的繁忙程度  
     5分钟:    
     cpu处理进程5分钟内的繁忙程度  
     15分钟:    
     cpu处理进程15分钟内的繁忙程度  
     :~$ uptime
10:09:38 up 2 days, 23:56, 3 users, load average: 0.58, 0.91, 0.96
  
    10:09:38 up 2 days, 23:56, 3 users, load average: 0.58, 0.91, 0.96
 总结    
     1.一核的临界点为1, n核的临界点为n,经验临界点n*70%  
     2. 查询核数(用于计算负载):    
     grep -c "pysical id" /proc/cpuinfo  
     grep 'processor' /proc/cpuinfo |wc -l  
     grep 'cpu cores' /proc/cpuinfo |wc -l  
     top命令按1  
     lscpu  
     平均负载案例分析实战    
     1. 用stress,mpstat,pidstat等工具,找出平均负载升高的根源
    
     stress    
     stress是linux系统压力测试工具,这里我们用作异常进程模拟平均负载身高的场景
    
     stress --cpu 1 --timeout 600  
     mpstat    
     mpstat是【多核cpu性能分析工具】,用来实时查看每个cpu的性能指标,以及所有cpu的平均值。  
     iostat    
     iostat是【I/O性能分析工具】
  
     pidstat    
     pidstat是一个常用的【进程性能分析工具】,用来实时查看进程cpu,内存,I/O以及上下文切换等性能指标  
     案例命令集合
    
     1. 模拟cpu负载高
    
     stress --cpu 1 --timeout 600
  
     2.通过uptime或者w查看负载    
     watch -d uptime
  
     3.查看整体状态mpstat    
     mpstat -P ALL 1    : 查看每个cpu核心使用率
  
     4.精确到进程    
     pidstat  
     linux系统系统优化的帮手
    
       - sar: collects and reports system activity information;
- iostat: reports CPU utilization and disk I/O statistics;
- tapestat: reports statistics for tapes connected to the system;
- mpstat: reports global and per-processor statistics;
- pidstat: reports statistics for Linux tasks (processes);
- sadf: displays data collected by sar in various formats;
- cifsiostat: reports I/O statistics for CIFS filesystems.
  
    - iostat: reports CPU utilization and disk I/O statistics;
- tapestat: reports statistics for tapes connected to the system;
- mpstat: reports global and per-processor statistics;
- pidstat: reports statistics for Linux tasks (processes);
- sadf: displays data collected by sar in various formats;
- cifsiostat: reports I/O statistics for CIFS filesystems.
 二、Linux系统服务管理    
     1.运行级别    
     运行级别就是linux启动的时候处于不同状态标识的集合。    
     文本模式
  
     图形模式  
     重启模式  
     关机模式  
     等等  
     看看运行级别
    
     runlevel
  
     systemctl get-default  
     切换运行级别    
     init 数字
  
     设置默认级别:systemctl set-default 
  
     三、Linux系统Systemd
    
     Linux系统启动的第一个进程systemd    
     centos6及之前是init
  
     PC:~$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─apache2───2*[apache2───26*[{apache2}]]
├─avahi-daemon───avahi-daemon
  
    systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─accounts-daemon───2*[{accounts-daemon}]
├─acpid
├─apache2───2*[apache2───26*[{apache2}]]
├─avahi-daemon───avahi-daemon
 为什么要用systemd
    
     1.init是串行执行的,且脚本复杂,相关的管理命令很多,很杂  
     systemd就是为了解决init的问题设计的。  
     systemd的优势    
     1.开机并行启动,显著提高开机启动速度  
     2.自动解决启动间的服务依赖关系。  
     3.服务的启动配置文件统一语法,管理起来方便  
     4.systemd较好的解决了原有模式缺陷,比如原有service不会关闭程序产生的子进程。
  
     5.从Debian9,Centos7,Ubuntu16等系统开始,都开始使用systemd来管理服务。  
     6.Centos7服务的启动停止不再使用脚本管理服务,也就是/etc/init.d下不再有脚本。  
     systemd相关路径    
     /usr/lib/systemd/system    
     相当于/etc/init.d(启动服务程序所在的路径)
  
     /etc/systemd/system    
     /etc/rc.d(不同运行级别启动文件路径)  
     /etc/systemd/system/multi-user.target.wants    
     /etc/rc.d/rc3.d(3级别路径),文本模式  
     systemctl命令    
     服务启动,停止,重启    
     systemctl start
systemctl stop
systemctl restart
systemctl reload :重新加载配置
systemctl status
systemctl is-active :查看服务是否在运行。
    
    systemctl stop
systemctl restart
systemctl reload :重新加载配置
systemctl status
systemctl is-active :查看服务是否在运行。
 PC:/etc/systemd/system$ systemctl status sshd.service 
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-15 10:13:19 CST; 3 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 960 (sshd)
Tasks: 1 (limit: 38181)
Memory: 8.8M
CGroup: /system.slice/ssh.service
└─960 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
4月 17 23:31:24 daidechao-PC sshd[1954244]: Accepted password for daidechao from 10.18.246.18 port 56643 ssh2
4月 17 23:31:24 daidechao-PC sshd[1954244]: pam_unix(sshd:session): session opened for user daidechao by (uid=0)
  
    ● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-15 10:13:19 CST; 3 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 960 (sshd)
Tasks: 1 (limit: 38181)
Memory: 8.8M
CGroup: /system.slice/ssh.service
└─960 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
4月 17 23:31:24 daidechao-PC sshd[1954244]: Accepted password for daidechao from 10.18.246.18 port 56643 ssh2
4月 17 23:31:24 daidechao-PC sshd[1954244]: pam_unix(sshd:session): session opened for user daidechao by (uid=0)
 开机自启动,不启动,查看各个级别下服务启动状态等常用命令    
     systemctl enable crond.service
    
     设置开机自启动
    
     原理,就是创建一个软链接    
     ln -s  /usr/lib/systemd/system/crond /etc/systemd/system/multi-user.target.wants/crond.service  
     systemctl disable crond.service
    
     开机不启动
  
     systemctl list-unit-files
    
     查看所有服务的开机自启动状态
  
     systemctl is-enabled crond.service
    
     查看特定服务是否为开机自启动  
     systemctl daemon-reload
    
     重新载入更改的systemd配置文件  
    
 
 
 
 
  0 条评论
 下一页
  
   
   
   
  
  
  
  
  
  
  
  
  
  
 