一.linux后台管理命令(nohup命令)
&符只是帮助进程在当前的ssh会话中,在后台运行,如果ssh会话断开,进程依然会丢失
nohup命令是真正让进程在后台运行、即使会话断开进程也不丢失,它也是要和&符结合使用的,实现命令后台执行
语法:nohup 你要执行的命令 &
[root@localhost ~]# nohup ping baidu.com &
[1] 83874
[root@localhost ~]# nohup: ignoring input and appending output to ‘nohup.out’
终止这个进程
[root@localhost ~]# jobs -l
[1]+ 84289 Running nohup ping baidu.com &
[root@localhost ~]# kill 84289
[root@localhost ~]# jobs
[1]+ Terminated nohup ping baidu.com
生产环境下的用法
关闭窗口,程序也不会中断,只有通过ps命令可以看到该进程,还在运行了
[root@localhost ~]# nohup ping baidu.com > /tmp/nohup_ping.log 2>&1 &
[1] 84839
[root@localhost ~]# jobs
[1]+ Running nohup ping baidu.com > /tmp/nohup_ping.log 2>&1 &
[root@localhost ~]# tail -f /tmp/nohup_ping.log
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=129 ttl=128 time=33.3 ms
64 bytes from 110.24服务器托管网2.68.66 (110.242.68.66): icmp_seq=130 ttl=128 time=31.4 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=131 ttl=128 time=32.0 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=132 ttl=128 time=34.2 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=133 ttl=128 time=32.7 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=134 ttl=128 time=33.9 ms
二.理解Linux的数据流
执行linux命令时,linux默认为用户进程提供了3种数据流
- stdin
- 标准输入,代号0
- 一般是键盘输入数据
- 比如cat命令等待用户输入
- stdout
- 标准输出,代号1
- 程序执行结果,输出到终端
- stderr
- 标准错误输出,代号2
- 程序执行结果,输出到终端
1.标准输入
cat 接收键盘的输入数据,然后打印到终端,直到ctrl +d 结束输入
[root@localhost ~]# cat
你好
你好
我是一原
我是一原
2.标准输出
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
3.标准错误输出
[root@localhost ~]# cat /etc/passwddddddd
cat: /etc/passwddddddd: No such file or directory
三.数据重定向
数据流的输入、输出,都是直接显示在屏幕上,你貌似做不了更多处理,不够强大,因此linux系统提供了数据重定向符号,让你能够对数据再次做处理
- 使用 “ > ”符号,将标准输出重定向到文件中。形式为:命令>文件名
- 使用“ >> ”符号,将标准输出结果追加到指定文件后面。形式为:命令>>文件名
- 使用“ 2> ”符号,将标准错误输出重定向到文件中。形式为:命令 2> 文件名
- 使用“ 2>> ”符号,将标准错误输出追加到指定文件后面。形式为:命令 2>>文件名
- 使用“ 2>&1 ”符号或“ &> ”符号,将把标准错误输出stderr重定向到标准输出stdout
- 使用“ >/dev/null ”符号,将命令执行结果重定向到空设备中,也就是不显示任何信息
1.标准输入重定向
输入重定向是指把命令(或可执行程序)的标准输入,重定向到指定的文件中,也就是说,输入可以不来自键盘,而来自一个指定的文件,原本是来自于终端的键盘输入,改为了,可以是来自于文件的输入
[root@localhost ~]# cat
2.标准输出重定向
[root@localhost ~]# echo '你好 我是一原' > yiyuan.log
[root@localhost ~]# echo '你好 我是一原' >> yiyuan.log
[root@localhost ~]# cat -n yiyuan.log
1 你好 我是一原
2 你好 我是一原
3.错误重定向追加
[root@localhost ~]# ecccccho '你好 我是一原' 2 >> yiyuan.log
4.将stderr重定向到stdout,就可以防止程序运行出错,导致程序异常
对于stderr的处理,建议用2>&1
,用的人最多
理解stderr,转为stdout的过程
写法一:
[root@localhost ~]# echhhho '你好 我是一原' >> yiyuan.log 2>&1
[root@localhost ~]# cat yiyuan.log
你好 我是一原
你好 我是一原
-bash: echhhho: command not found
写法二:
[root@localhost ~]# echhho '你好 我是一原' &>> yiyuan.log
[root@localhost ~]# cat yiyuan.log
你好 我是一原
你好 我是一原
-bash: echhhho: command not found
-bash: echhho: command not found
黑洞文件同样遵循stdout、stderr的语法
[root@localhost ~]# echo '你好 我是一原' &>> /dev/null
[root@localhost ~]# eeeeeeeecho '你好 我是一原' &>> /dev/null
四.机器负载查看
系统负载指的是在单位时间内,系统分配给CPU处理的进程数量,必然是数量越多,负载值越高,机器的压力越大,load average
表示平均负载
通过命令行运行 Linux 系统的 uptime 命令,会输出以下信息:
- 系统的当前时间
- 系统的总正常运行时间
- 当前正在运行系统的活动用户
- 过去 1、5 和 15 分钟内可用的系统负载的平均值
如何理解uptime看到的负载
分别是1、5、15分钟内的平均负载情况,表示是1~15分钟内CPU的负载变化情况
- 三个值如果差不多,表示系统很稳定的运行中,15分钟以内,CPU都没有很忙
- 如果1分钟内的值,远大于15分钟的值,表示机器在1分钟内压力在直线上升
- 如果1分钟内的值,小于15分钟的值,表示系统的负载正在下降中
[root@localhost ~]# uptime
18:21:43 up 1 day, 23:27, 3 users, load average: 0.01, 0.02, 0.05
最理想化的状态是每个CPU都在运行着进程,充分让cpu工作起来,效率最大化,你得先看看你机器上有几个CPU(几个核,就是有几个cpu可以工作)
[root@localhost ~]# lscpu |grep -i '^cpu(s)'
CPU(s): 2
通过cpu的文件,确定是几颗CPU
[root@localhost ~]# cat /proc/cpuinfo |grep 'core id' | sort |uniq|wc -l
1
五.Stress负载压力测试
cpu的压力,来自于高频的计算任务,比如数值计算等,我们可以用bash程序,python程序,以及各种编程语言,来实现复杂的高频率计算
这里我们用几个工具:
stress stress是一个linux的压力测试工具,专门用于对设备的CPU、IO、内存、负载、磁盘等进行压测。
mpstat 多核CPU性能分析
pidstat 实时查看cpu、内存、io等指标
1.安装stress工具
[root@localhost ~]# yum install -y stress
2.使用stress命令,给机器进行压力测试,这个命令会让你的机器,cpu达到100%,以此实现最高压的环境
–cpu 4 让4个cpu同时工作
[root@localhost ~]# stress --cpu 1 --timeout 600
stress: info: [104589] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
六.Free查看内存使用情况
free命令
free 命令主要是用来查看内存和 swap 分区的使用情况的,其中:
- total:是指物理内存总大小,信息来自于
/proc/meminfo
- used:是指已经使用的内存,
userd=total-free-buffers-cache
- free:是指空闲的;
free = total - used - buff - cache
- shared:是指共享的内存;用于tmpfs系统
- buff/cache
- buffers:缓冲区,写入缓冲,用于内存和磁盘之间的数据写入缓冲,存放内存需要写入到磁盘的数据
- cached:缓存区,读取缓存,加快CPU和内存数据交换,存放内存已经读取完毕的数据
- 第2行数据是Swap交换分区,也就是我们通常所说的虚拟内存(硬件交换分区)
- 防止内存用完导致系统崩溃,临时拿硬盘的一些空间当做内存使
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 3861288 319408 3156064 28268 385816 3281988
Swap: 2097148 0 2097148
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 3770 311 3082 27 376 3205
Swap: 2047 0 2047
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.7G 311M 3.0G 27M 376M 3.1G
Swap: 2.0G 0B 2.0G
七.理解buff和cache
- buffer,==缓冲区==,buffers是给==写入数据==加速的
- Cache,==缓存==,Cached是给==读取数据==时加速的
1.cache是指把读取磁盘而来的数据保存在内存中,再次读取,下一次不用读取硬盘,而直接从内存中读取,加速数据读取过程
cache解决的时间问题,提高数据读取速度,cache利用的是内存极快的速度特性,读写速度是磁盘的很多倍。
2.buffer是指写入数据时,把分散的写入操作保存到内存,达到一定程度集中写入硬盘,减少磁盘碎片,以及反复的寻道时间,加速数据写入
buffer解决的是空间问题,给数据写入提供一个暂存空间,磁盘对碎片化的数据处理,是很低效的
八.df 查看磁盘信息
命令:df
作用:查看磁盘的空间(disk free)
语法: df [-h]
选项:-h表示可读性较高的形式展示大小
九.磁盘io监控(iotop)
iotop命令是一个用来监视磁盘I/O使用状况的top类工具
iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息
yum install iotop -y
显示默认信息
iotop
2.以kb单位显示io进程
iotop -k
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
服务器托管网 Google:全球最大的搜索引擎,提供全面的搜索服务,包括网页、图片、视频、新闻、地图等。 Baid服务器托管网u:中国最大的搜索引擎,提供类似于Google的全面搜索服务,同时也有网盘、知道等功能。 Bing:微软公司推出的搜索引擎,同样提供全…