linux 运维常用命令

程序:程序员编写功能代码是静态的,是在永久存储设备上存放的
进程:程序运行时,在内存中的状态是动态的

静态查看进程ps

ps -ef    #显示正在运行的命令程序

UID:userid
PID:进程ID号
PPID:父进程
C:cpu使用百分比
STIME:程序的启动时间
TTY:登录的终端
TIME:程序使用掉 CPU 的时间
CMD:运行的命令

ps -aux   #显示终端上地所有进程,包括其他用户地进程,显示没有控制终端地进程

%CPU:占用CPU百分比
%MEM:占用内存的百分比
VSZ:虚拟内存集
RSS:常驻内存集
TTY:登录的终端
STAT:进程状态
START:启动时间
TIME :程序使用掉 CPU 的时间
COMMAND:运行的命令
虚拟内存集>常驻内存集

动态查看进程top

 top    #动态查看进程,按M根据内存排序,按P根据CPU排序

load average #平均负载,第一分钟,第五分钟,第十五分钟的平均负载
hi hard interuppt #硬中断
si soft interuppt 软中断

top -d  1   #每秒刷新一次

进程间的通信:共享内存,消息队列,信号
信号方式通信:管理进程(杀进程)

杀进程kill -9

ps aux | grep a.txt
kill -9  7731 #找到进程号7731,关闭该进程

杀进程 命令:
pkill 进程号 :停止一个进程
pkill -kill -t /dev/pts/o 将用户从终端中提出,其实是将用户的/bin/bash 的进程杀死
xkill 图形化杀进程

nice值:进程运行的优先级

端口查看

lsof #系统打开的文件

lsof -i :22 #查看打开22端口所有进程
lsof -i :80  #查看打开80端口所有进程,如果没有则没有返回
netstat -nutlp #查看当前开启的所以端口

netstat -anlp
-a (all)显示所有选项,默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名

netstat -anlp| grep 22  #查看22端口占用情况

远程访问端口telnet

telnet 127.0.0.1  22  #查看本机22端口是否开启
telnet  192.18.1.10  80  #远程查看192.18.1.10的80端口是否开启

查看系统发行版本,以及版本号,架构

查看发行版本

cat /etc/os-release   #比较全面

查看服务器架构

echo $HOSTTYPE

查看CPU核数

pkill -kill -t pts/2

强制使某个用户下线

pkill -kill -t pts/2

mount挂载硬盘

mkdir /mnt/cdrom   #创建挂载目录
mount -t auto /dev/cdrom /mnt/cdrom    #挂载
cd  /mnt/cdrom       #看是否挂载成功
fuser -k 目录     #解除挂载时,设备忙,使用这个命令解除挂载

查看服务器日志

cat /var/log/messages | grep error   #查看报错

日志级别:1:emage 2:crit 3:alert 4:waring 5:notice 6:info 7:debug

更改Linux系统时间

timedatectl    #查看当前时区时间
timedatectl set-timezone Asia/Shanghai  #指定时区为亚洲/上海

端口扫描

扫描指定主机所有udp、tcp协议端口

nmap -sUT 192.168.0.106
vim ecspubIP.txt #创建文件,第一列是主机名,第二列是公网IP

在这里插入图片描述

vim scan.sh
#!/bin/bash
echo "###############################################################"
echo "hostname": $1
nmap -sUT $2
echo "###############################################################"
awk '{print "sh scan.sh "$1,$2}' ecspubIP.txt  | bash >allport.txt 
#批量执行端口扫描
cat allport.txt |grep -v done | grep -v show | grep -v up | grep -v Starting >>allport1.txt
#对扫描的文本进行处理,只要主机名,IP地址和端口

查看服务器公网出口地址

curl inet-ip.info

tldr 类似man手册

tldr命令相比于linux中提供的man命令更加简单好用,能够将使用命令行的门槛大大降低,如下图所示。

在这里插入图片描述

tldr安装

curl -o /usr/bin/tldr https://raw.githubusercontent.com/raylee/tldr/master/tldr && chmod +x /usr/bin/tldr

或者

yum install -y tldr

执行tldr 报错解决:
tldr 命令查询的 github raw 网址已经被 GFW 墙掉了。请使用全局代理或 proxychains 前缀,或添加 https_proxy 环境变量。

Error fetching from tldr: <urlopen error [Errno 111] Connection refused>

在这里插入图片描述

解析 raw.githubusercontent.com 对应地址,添加到/etc/hosts
在这里插入图片描述

vim /etc/hosts
185.199.110.133 raw.githubusercontent.com

在这里插入图片描述

使用tldr 加对应命令

tldr  tar

处理 您在 /var/spool/mail/root 中有新邮件

Linux 每次执行命令后会提示您在 /var/spool/mail/root 中有新邮件,很烦
修改配置文件解决

在这里插入图片描述

echo "unset MAILCHECK">> /etc/profile
source /etc/profile

压测工具Ab(ApacheBench)

Ab(ApacheBench) 测试工具是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用。ab 一般都是在Linux上用。

Ubuntu:apt-cache install apache2-util
Centos:yum -y install httpd-tools
对应用服务进行压力测试,模拟不同并发用户数下的服务的响应情况:
110 个并发用户/10 万请求量()
2100 个并发用户/10 万请求量()
31000 个并发用户/10 万请求量()

ab -c 10 -n 100000 http://192.168.40.120:30002/
ab -c 100 -n 100000 http://192.168.40.120:30002/
ab -c 1000 -n 100000 http://192.168.40.120:30002/
ab -c 1000 -n 1000000 -t 60 http://192.168.40.120:30002/
参数的含义:

-n:总请求次数(最小默认为 1);
-c:并发次数(最小默认为 1 且不能大于总请求次数,例如:10 个请求,10 个并发,实际就是 1 人请求 1 次);
-t:持续时间(秒为单位)
-p:post 参数文档路径(-p 和 -T 参数要配合使用);
-T:header 头内容类型(此处切记是大写英文字母 T);

在这里插入图片描述

  • Requests per second:吞吐率,指某个并发用户数下单位时间内处理的请求数;
  • Time per request:上面的是用户平均请求等待时间,指处理完成所有请求数所花费的时间 /(总请求数 / 并发用户数);
  • Time per request:下面的是服务器平均请求处理时间,指处理完成所有请求数所花费的时间 / 总请求数;
  • Percentage of the requests served within a certain time:每秒请求时间分布情况,指在整个请求中,每个请求的时间长度的分布情况

grafana查看到的流量

在这里插入图片描述

日志轮转logrotate分割管理服务器日志

安装

yum install -y logrotate

默认 logrotate 安装在 etc 目录下,其中

  • /etc/logrotate.conf 主配置文件。
  • /etc/logrotate.d 目录下可以存放很多具体的日志滚动切割规则配置文件,我们想要自动拆分日志的配置都可以单独的放在这里,方便后续的维护和修改。

配置日志分割文件

要分割 nginx 的 access.log 文件,具体操作如下:

#在 /etc/logrotate.d/ 目录下新建一个叫做 access 的配置文件
cd /etc/logrotate.d
vim access

# 然后编辑 access 文件:
/usr/local/nginx/logs/access.log{
  weekly
  missingok
  rotate 8
  create
  copytruncate
  noolddir
  dateext
  compress
  delaycompress
  notifempty
  sharedscripts
}
配置项    说明
daily每天滚动一次
weekly指定滚动周期为每周
monthly指定滚动周期为每月
notifempty如果文件为空,则不滚动
missingok如果文件不存在,则不滚动
rotate 7保留最近7个日志文件
compress压缩日志文件
delaycompress延迟压缩,延迟到下一次日志分割的时候。注意这个要结合compress 一起使用
create 640 root root新建日志文件的属主及权限,如果 nginx 不是root用户运行的要特别注意
sharedscripts共享脚本,即日志滚动完成后再运行脚本,否则每滚动一个日志文件都要运行一次脚本
postrotate日志滚动完成后运行的脚本,有些业务日志可以不需要这个脚本
copytruncate用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate备份日志文件不过不截断
nocreate不建立新的日志文件
errors address滚动时的错误信息发送到指定的 Email 地址
ifempty即使日志文件为空文件也做滚动
mail address把滚动的日志文件发送到指定的 Email 地址
nomail滚动时不发送日志文件
olddir /log滚动后的日志文件放入指定的目录,这里是/log,必须和当前日志文件在同一个文件系统。
noolddir滚动后的日志文件和当前日志文件放在同一个目录下
sharedscripts共享脚本,即日志滚动完成后再运行脚本,否则每滚动一个日志文件都要运行一次脚本
prerotate在滚动之前需要执行的指令,例如修改文件的属性等动作,必须独立成行
postrotate在滚动之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务;必须独立成行
dateext使用当期日期作为命名格式
dateformat .%s配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合
dateext使用,只支持%Y/%m/%d/%s四个参数
size log-size当日志文件到达指定的大小时才滚动,以下为合法格式:  
      size = 5或size 5>= 5 个字节就滚动) size = 100k或size 100k size = 100M或size 100M

为了验证配置文件是否能正常工作,我们可以使用下面的命令:

logrotate -d /etc/logrotate.d/nginx
# 如果输下面内容,并没有报错信息,说明配置文件有效。

reading config file /etc/logrotate.d/nginx
Allocating hash table for state file, size: 15360 B

Handling 1 logs

rotating pattern: /var/log/nginx/*.log  after 1 days (7 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/*.log /access.log
  log does not need rotating (log has been already rotated)
considering log /var/log/nginx/*.log /error.log

强制执行

logrotate -f /etc/logrotate.d/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值