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-11-23 07:27  红尘过客2022  阅读(225)  评论(0编辑  收藏  举报