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

posted @   红尘过客2022  阅读(267)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示