linux常用命令&操作
linux常用命令&操作
linux有大量命令,也有很多版本,我们记录下使用频率最高的命令和操作,便于快速使用,暂时不关注操作系统的系统知识图谱。
以下都是针对手工运维的场景,虽然很多指标可能都可以通过agent+influxdb+看板+告警 +自愈搞定,暂不考虑。
以下使用阿里云申请的使用ECS进行练习,Ubuntu系统,centos在一些巨头云公司已经禁用了,Ubuntu也不怎么推荐使用了,欧拉主导。
1、查看磁盘&内存&cpu使用情况
运维人员登录服务器必须习惯查看磁盘使用情况
1.1、 df -h
root@jdit:/home/ecs-assist-user# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 179M 1.1M 178M 1% /run
/dev/vda3 40G 3.3G 35G 9% /
tmpfs 892M 0 892M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 197M 5.3M 192M 3% /boot/efi
tmpfs 50M 0 50M 0% /usr/local/aegis/cgroup
tmpfs 179M 4.0K 179M 1% /run/user/0
1.2、df -i
查看node详情
这个是运维人员长忽略的一个问题,以前全云覆盖promethouse遇到过问题,磁盘正常,用户的虚拟机却无法下载agent,因为node满了。
root@jdit:/home/ecs-assist-user# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
tmpfs 228313 703 227610 1% /run
/dev/vda3 2608144 92883 2515261 4% /
tmpfs 228313 2 228311 1% /dev/shm
tmpfs 228313 3 228310 1% /run/lock
/dev/vda2 0 0 0 - /boot/efi
tmpfs 228313 2 228311 1% /usr/local/aegis/cgroup
tmpfs 45662 26 45636 1% /run/user/0
1.3、free -h
查看内存使用情况,如果部署jar服务的OS,这个很重要,如果Swap使用比较多,GC就会比较慢了
root@jdit:/home/ecs-assist-user# free -h
total used free shared buff/cache available
Mem: 1.7Gi 213Mi 560Mi 2.0Mi 1.0Gi 1.4Gi
Swap: 0B 0B 0B
1.4、top
配置nginx服务常用命令,可以查看很多信息
在top看板按1 能够查看cpu核数,根据真实核数可以设置nginx进程数
ctrl+c可以退出top看板
top - 07:23:08 up 8:47, 0 users, load average: 0.00, 0.00, 0.00
Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1783.7 total, 560.6 free, 213.7 used, 1009.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1383.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1042 root 10 -10 121524 31352 16596 S 2.0 1.7 9:46.31 AliYunDun
1020 root 20 0 22428 5848 5148 S 0.3 0.3 0:19.49 AliYunDunUpdate
12997 root 20 0 0 0 0 I 0.3 0.0 0:00.48 kworker/u4:4-events_power_efficient
1 root 20 0 102232 13196 8236 S 0.0 0.7 0:06.10 systemd
1.5、du -sh *
我们看到某个目录快满了或者已经满了,到底那个文件造成的需要逐层向下找。
就需要这个命令,查看统计情况
root@jdit:/usr# du -sh *
160M bin
4.0K games
27M include
1.2G lib
4.0K lib32
4.0K lib64
3.0M libexec
4.0K libx32
286M local
31M sbin
239M share
140M src
2、进程信息管理
运维常见的操作还会涉及到进程的查看,终止
2.1、ps -ef|grep name
查看进程,我能看到启动账号,启动时间,进程号,启动详情
运维常用的就是可以通过此命令找到各种应用使用的服务,中间件或者脚本等进程
root@jdit:/usr# ps -ef|grep python
root 746 1 0 Nov22 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 759 1 0 Nov22 ? 00:00:04 /usr/bin/python3 -Es /usr/sbin/tuned -l -P
root 978 1 0 Nov22 ? 00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root 27719 27595 0 07:58 pts/0 00:00:00 grep --color=auto python
2.2、pwdx pid
查看启动路径
这可以帮助我们快速找到进程在哪里启动的,尤其做自动化写shell很有用。
因为一个服务器可能有多个同名的服务,往往需要拿真实的启动路径进行校验,然后确认是否删除
案例:当初自动化kill agent进程导致第三方投诉,因为出现同名agent
root@jdit:/usr# pwdx 746
746: /
2.3、kill -9 pid
删除进程
3、文件&目录处理
文件处理是非常常用的
3.1、创建文件&清空日志文件
通过输入到空内容到一个文件名start.sh自动就创建了一个start.sh空文件
这种方案还可以清空日志文件的内容
root@jdit:/data01/test# >start.sh
root@jdit:/data01/test# >job.log
3.2、压缩和解压tar&tar.gz包
-
压缩:tar czvf test.tar test/
-
解压: tar xzvf test.tar
我们进行ftp copy一些东西的时候往往会先打包,但是注意一件事就是要清理掉日志。
例如复制nginx,openresty,甚至部署的应用的时候,要先把日志清理了,否则会非常大。
root@jdit:/data01# tar -czvf test.tar test/
test/
test/job.log
test/start.sh
root@jdit:/data01# tar zxvf test.tar
test/
test/job.log
test/start.sh
查看参数可以用:tar --help
- -c: 建立压缩档案
- -x:解压
- -z:有gzip属性的
- -v:显示所有过程
- -f: 使用档案名字,切记,这个参数是必须的,是最后一个参数,后面只能接档案名
3.3、压缩和解压zip文件
这个一般虚拟机都不自带这个命令需要手工安装
详情可以参考:https://www.runoob.com/linux/linux-comm-zip.html
压缩命令:zip -rv test.zip test/
解压命令:unzip test.zip
root@jdit:/data01# apt install zip -y
root@jdit:/data01# zip -rv test.zip test/
adding: test/ (in=0) (out=0) (stored 0%)
adding: test/job.log (in=432) (out=15) (deflated 97%)
adding: test/start.sh (in=0) (out=0) (stored 0%)
total bytes=432, compressed=15 -> 97% savings
root@jdit:/data01# unzip test.zip
Archive: test.zip
creating: test/
inflating: test/job.log
extracting: test/start.sh
- -v 显示指令执行过程或显示版本信息。
- -r 递归处理,将指定目录下的所有文件和子目录一并处理。
3.4、 创建目录
创建目录是非常常用的操作
- mkdir jdit 创建单个目录
- mkdir -p /data01/nginx/lua/logs 加上-p参数可以创建多层目录
root@jdit:/data01# mkdir jdit
root@jdit:/data01# ll
total 339692
drwxr-xr-x 4 root root 4096 Nov 23 09:08 ./
drwxr-xr-x 20 root root 4096 Nov 22 22:37 ../
drwxr-xr-x 2 root root 4096 Nov 23 09:08 jdit/
root@jdit:/data01# mkdir -p /data01/nginx/lua/logs
3.5、备份文件&目录
我们修改一些配置文件,或者启动脚本等文件的时候,经常需要对源文件进行备份就会用到cp命令
- 文件备份:cp test.tar test.tar.bak
- 目录备份:cp -r jdit wht
root@jdit:/data01# cp test.tar test.tar.bak
root@jdit:/data01# cp -r jdit wht
- -r或-R:递归处理,将指定目录下的子文件和子目录一并处理(复制目录的时候使用)
3.6、远程copy
举例:我们调试好了一个组件 openrsty+lua,需要把openresty同步部署到8台os下,只需要远程copy即可
-- copy 远程主机的目录到当前主机当前目录下
scp -r root@192.168.1.112:/usr/local/openresty ./
-- copy当前主机openresty到远程目录下
scp -r /usr/local/openresty root@192.168.1.112:/usr/local
3.7、查看文件内容
- tail -1000f nginx.log 查看日志
- less service.log 查看日志,这种方式是从头看,例如查看jar启动有没有问题
- cat -n service.log 查看文件所有内容,并显示行数,这种有点坑,文件不能太大,否则内存爆了。
- grep "error" filename 查找文件中是否有当前内容
技巧:sh start.sh &&tail -1000f app.log 不仅能够启动服务,还能看到启动是否正常 ,这才是正确启动jar包的姿势
3.8 编辑文件常用操作
-
vi 编辑文件
-
vim 不仅能编辑普通文本文件,还能编辑压缩文件
详细内容参考:https://www.cnblogs.com/zhaogaojian/p/16377266.html
esc退出编辑模式,常用操作说明
3.8.1 移动光标
- 按上下左右键可以进行光标移动
- 0 :光标移至行首
- $ :光标移至行尾
- H :光标移至屏幕首行
- M :光标移至屏幕中间
- L :光标移至屏幕最末行
- [[:双击[键 跳至文尾行
- ]]:双击]键 跳至文末行
3.8.2、插入文本
- i :在光标前插内内容
- a :在光标后插入内容
- o :在所在行的下一行插入新行
- O :在所在行的上一行插入新行
3.8.3、删除文本
- d0:删除光标至行首的内容
- d$:删除光标至行尾的内容
- dd :删除整行(剪切,会覆盖剪切板)
3.8.4 末行命令
- :n1,n2 d :将n1至n2行删除
- :w 保存
- :q 退出
- :x 保存并退出
- :q! 强制退出
- :w! 强制保存
- :数字 定位到指定行
- :set nu 显示行号
- :set nonu 取消行号
- u:取消上一次操作
- ctrl+r:恢复上一次操作
其他操作技巧
1、清屏
ctrl+l
或者输入
clear
2、自动补全
按下tab键
3、终止或者退出
ctrl+c或者ctrl+d
4、 查看历史命令
history
5、查看系统是否被重启了
who -b