Linux操作命令
文章目录
Linux操作命令,初始学习记录Linux常用命令
多通过 man 查看,SEE ALSO 是最好的
安装
源代码形式
- 绝大多数开源软件都是直接以原码形式发布的
- 源代码一般会被打成.tar.gz的归档压缩文件
- 源代码需要编译成为二进制形式之后才能够运行使用
- 源代码基本编译流程:
- .configure 检查编译环境;
- make对源代码进行编译;
- make insall 将生成的可执行文件安装到当前计算机中
rpm
RPM 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。
RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。
- 安装软件:执行
rpm -ivh rpm包名
,如:rpm -ivh apache-1.3.6.i386.rpm
- 升级软件:执行
rpm -Uvh rpm包名
。 - 反安装:执行
rpm -e rpm包名
。 - 查询软件包的详细信息:执行
rpm -qpi rpm包名
- 查询某个文件是属于那个rpm包的:执行
rpm -qf rpm包名
- 查该软件包会向系统里面写入哪些文件:执行
rpm -qpl rpm包名
rpm -ql jenkins
RPM特点
- 源代码形式的特点:操作复杂、编译时间长、极易出现问题、依赖关系复杂
- 为了方便,RPM(redhat package manager)
- RPM通过将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包
- 常用命令规范:linuxcast-1.2.0-30.el6.1686.rpm 包名-版本号-适用平台-32/64-rpm
- 使用
rpm –i software.rpm
(安装);rpm -e software.rpm
(卸载);rpm –U software.rpm
(升级形式安装);rpm –ivh http://www.linuxcast.net/software.rpm
(支持通过http\ftp协议形式安装)-v
显示详细信息;-h
显示进度条
查询功能:rpm –qa
列出全部已经安装的.rpm软件 rpm –qa |grep ***
rpm -qa | grep docker
yum
-
rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum解决这些问题。Yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系,其特点:
-
自动解决依赖关系
-
可以对rpm进行分组,基于组进行安装操作
-
引入仓库概念,支持多个仓库
-
配置简单
-
-
yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库。
-
仓库的配置文件
/etc/yum.repos.d
目录下 -
使用:
-
yum install
安装; -
yum remove
卸载; -
yum update
升级制定软件
-
-
安装的时候,会下载软件包.Rpm在安装,所以用国内仓库改变镜像源
-
访问地址http://mirrors.163.com/
-
点centos使用帮助
-
按步骤来
-
-
查询软件:可以使用
yum search **
yum list installed | grep docker
yum makecache fast
在更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存 将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度
yum clean all
yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存
安装man中文手册
|
|
wget
tar
ps
- 统计php-fpm平均内存占用 rss 进程使用的总物理内存数, Kbytes字节 cmd(args) 执行命令的简单格式
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }
netstat
-
查看nginx监听了哪些端口
netstat -anp | grep nginx
-
查看php-fpm进程数是否够用
当前fastcgi进程个数
netstat -napo |grep "php-fpm" | wc -l
查看服务器上一共开了多少的 php-cgi 进程
ps -ef |grep "php-fpm"|grep "pool"|wc -l
- 查看已经有多少个php-cgi进程用来处理tcp请求
netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
文本处理
grep
sed
awk
基本用法
|
|
运算符
= += -= *= /= %= ^= **=
赋值||
逻辑或&&
逻辑与~ 和 !~
匹配正则表达式和不匹配正则表达式< <= > >= != ==
关系运算符
内建变量
- $n 当前记录的第n个字段,字段间由FS分隔
- $0 完整的输入记录
- FNR 各文件分别计数的行号
- FS 字段分隔符(默认是任何空格)
- NF 一条记录的字段的数目
- NR 已经读出的记录数,就是行号,从1开始
更多使用 man awk
- 查看哪些进程使用了 swap
for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head
性能检测
strace
开启多个客户端窗口,分析redis
窗口1
|
|
窗口2
|
|
窗口3
|
|
uptime
该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、15min内的平均负载。
|
|
dmesg
打印内核环形缓存区中的内容,可以用来查看一些错误
|
|
vmstat
查看系统的整体性能
|
|
mpstat
用于查看cpu的性能
|
|
该命令用于每秒打印一次每个CPU的统计信息,可用于查看CPU的调度是否均匀。
pidstat
|
|
该命令用于打印各个进程对CPU的占用情况,类似top命令中显示的内容。pidstat的优势在于,可以滚动的打印进程运行情况。
iostat
用于查看io的状态
|
|
- r/s, w/s, rkB/s, wkB/s,表示每秒向I/O设备发出的reads、writes、read Kbytes、write Kbytes的数量。
- await,表示应用程序排队等待和被服务的平均I/O时间,该值若大于预期的时间,这表示I/O设备处于饱和状态或者异常。
- avgqu-sz,表示请求被发送给I/O设备的平均时间,若该值大于1,则表示I/O设备可能已经饱和;
- %util,每秒设备的利用率;若该利用率超过60%,则表示设备出现性能异常;
free
用于产看内存的状态
|
|
- buffers: For the buffer cache, used for block device I/O.
- cached: For the page cache, used by file systems.
- 若buffers和cached接近0,说明I/O的使用率过高,系统存在性能问题。
- Linux中会用free内存作为cache,若应用程序需要分配内存,系统能够快速的将cache占用的内存回收,因此free的内存包含cache占用的部分。
sar
系统活动状态报告简称
用于查看网络的状态
-n DEV 1, 每秒统计一次网络的使用情况; -n EDEV 1,每秒统计一次错误的网络信息;
sar -n DEV 1
- IFACE ,网络接口名称;
- rxpck/s ,每秒接收到包数;
- txpck/s ,每秒传输的报数;(transmit packages)
- rxkB/s ,每秒接收的千字节数;
- txkB/s ,每秒发送的千字节数;
- rxcmp/s ,每秒接收的压缩包的数量;
- txcmp/s ,每秒发送的压缩包的数量;
- rxmcst/s,每秒接收的组数据包数量;
sar -n TCP,ETCP 1
可以用于粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量;
-
TCP, 报告关于TCPv4网络流量的统计信息;
-
ETCP, 报告有关TCPv4网络错误的统计信息;
-
active/s: Number of locally-initiated TCP connections per second (e.g., via connect()),发起的网络连接数量;
-
passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept()),接收的网络连接数量;
-
retrans/s: Number of TCP retransmits per second,重传的数量;
top
包含更多的指标统计,相当于一个综合命令
|
|
top命令的顶部显示与uptime命令相似的输出,当前时间,系统已运行时间,当前已登录用户的数量,相应最近5、10、15分钟内的平均负载。
任务 Tasks: 系统闲杂共有进程,运行running,休眠sleeping,stoped状态0个,zombie状态(僵尸)的有0个。
CPU状态:
- us,user:运行(未调整优先级的)用户进程的CPU时间
- sy,system:运行内核进程的CPU时间
- ni,运行已调整优先级的用户进程的CPU时间
- wa:用户等待IO完成的CPU时间
- hi:处理硬件中断的CPU时间
- si:处理软件中断的CPU时间
- st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
内存使用:Mem 物理内存 和 Swap 虚拟内存使用(交换空间)
各进程(任务)的状态监控:
- PID:进程id,进程唯一标识符
- USER:进程所有者的实际用户名
- PR:进程调度优先级,有些值是
RT
,就是这些进程运行在实时态 - NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负责表示高优先级,正值表示低优先级。
- VIRT:进程使用的虚拟内存。
- RES:驻留内存大小。是任务使用的非交换物理内存大小。进程使用的,未被换出的物流内存大小。
- SHR:SHR是进程使用的共享内存。
- S:进程状态。
- D 不可中断的睡眠态
- R 运行态
- S 睡眠态
- T 被跟踪或已停止
- D 僵尸态
- %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
- %MEM:进程使用的可用物理内存百分比。
- TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
- COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
多核监控按键盘数字 1
,可监控每个CPU,其他可 man top
压力测试工具
stress
- CPU密集型进程
$ stress --cpu 1 --timeout 600
- I/O密集型进程
$ stress -i 1 --timeout 600
- 大量进程的场景
$ stress -c 8 --timeout 600
stress-ng
-
I/O密集型进程 比如
$ stress-ng -i 1 --hdd 1 --timeout 600
(–hdd表示读写临时文件) -
chattr
配置文件隐藏属性+i
可以让一个档案无法被更改+a
不能修改和删除旧有的数据,只能追加
-
lsattr
查阅隐藏的属性
档案的特殊权限
- SUID,SGID,SBIT 特殊权限 s 和 t
- 4为SUID
- 2为SGID
- 1为SBIT
SUID 的限制与功能
- 权限仅对二进制程序有效;
- 执行者对于该程序需要具有x的可执行权限;
- 本权限仅在执行该程序的过程中有效(runtime);
- 执行者将具有该程序拥有者(owner)的权限。
SGID 对档案的功能
- SGID对二进制程序有用;
- 程序执行者对于该程序来说,需具备x的权限;
- 执行者在执行过程中将会获得该程序组的支持。
SGID 对目录的功能
- 用于若对于此目录具有r与x的权限时,该用户能够进入此目录;
- 用户在此目录下的有效群组将会变成该目录的群组;
- 用途:若用户在此目录下具有w的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同。
SBIT 对目录的作用
- 当用户对此目录具有w,x权限,亦即具有写入的权限时;
- 用户在该目录下建立档案或目录时,仅有自己与root才有权力删除该档案。
权限与指令
- 进入某目录成为 可工作目录 的基本权限
- 可使用指令
cd
- 目录权限 x
- 查阅文件名,对目录还要有 r
- 可使用指令
- 目录内读取一个档案
- 可使用指令
cat
、more
、less
- 目录权限 x
- 档案权限 r
- 可使用指令
- 修改一个档案的基本权限
- 可使用指令
nano
、vi
- 目录权限 x
- 档案权限 r w
- 可使用指令
- 建立一个档案的基本权限
- 目录权限 w x
- 进入某目录并执行该目录下的指令的基本权限
- 目录权限 x
- 档案权限 x
文章作者 小叨
上次更新 2020-04-26