一、基础命令
系统信息和性能查看
| 命令 | 场景 |
|---|---|
| hostname | 查看计算机名 |
| uname | 显示操作系统信息 |
| who | 显示当前登录系统的⽤户 |
| whoami | 显示当前⽤户名 |
| uptime | 查看系统运⾏时间、⽤户数、负载 |
| top | 动态显示cpu/内存/进程等情况 |
| free -m | 查看内存⽤量和交换区⽤量 |
| df -h | 查看磁盘使⽤情况及挂载点 |
| date/cal | 显示系统⽇期时间/日历 |
| iostat | 查看io读写/cpu使⽤情况 |
常用命令
| 命令 | 场景 |
|---|---|
| clear | 清除当前屏幕终端上的任何信息 |
| su - user_name | 切换用户 |
| last | 查看用户登录日志 |
| ifconfig | 查看⽹络接⼝属性 |
| ping | 测试本机与目标机是否联通、联通网速、稳定性 |
| ifconfig eth0 | 查看某⽹卡的配置 |
| rpm -qa|grep pkg_name | 检查是否有安装某个软件包,a所有软件包,q已经安装 |
| yum -y install pkg_name | 下载并安装软件包 |
| man 命令 | 命令说明以及参数用法 q退出界面 |
| --help | 参数用法 |
| history | 查看历史运行命令,鼠标上下键可切换 |
二、文件操作和权限
文件操作
| 标题 | |
|---|---|
| cd | 更改所在目录,cd ~用户主目录,cd /用户根目录,cd ..上一级 |
| mkdir | 创建一个目录,-p确保目录不存在则创建 |
| touch | 创建一个文件 |
| >和>> | >覆盖;>>追加;ls -l > a.txt |
| echo | 写内容到输出 |
| cat file | 查看⽂件内容,-n标识行数 |
| more | 查看长文件内容,空格翻页 |
| head -10 | 查看文件前10行 |
| tail -10 | 查看文件后10行 |
| tail -f | 实时查看添加到文件中的内容 |
| grep keyword file_name | 查找文件中的关键词 |
| tar -cvfz xxx.tar.gz dir | 创建gzip压缩包 |
| tar -zxvf xxx.tar.gz | 解压gzip压缩包 |
| tar -xvf xxx.tar | 解压tar包 |
| cp filename1 filename2 | 把filename1复制一份并命名为 filename2 |
| cp | -r可复制文件夹 -f在覆盖重命名文件时不做任何提示 |
| find | -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 |
| mv filename1 filename2 | 把filename1重命名为 filename2 ,重命名目录名同理 |
| mv filename1 newdir/filename2 | 将文件移动到另一个目录并修改名称 |
| mv file1 file2 file3 a_dir | 移动多个文件到目录a_dir |
| scp -P 22 -r /home/server Android@192.168.1.110:/opt | 将本地/home/server的文件夹上传到远端服务器192.168.1.110的目录/opt下 |
| scp -P 22 -r android@192.168.1.110:/opt/docs /home | 将远端服务器192.168.1.110下的/opt/docs文件夹下载到本地/home下 |
| rz/sz yum install lrzsz -y | rz,上传;sz,下载 |
文件权限
查看文件所有者
查看文件所在组
修改文件所有者
chown tom a.txt 将文件所有者改为tom chown -R tom test/ 将test目录下所有文件,包括子目录和子目录下所有文件,递归将文件、目录的所有者改为tom
修改权限-chmod
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
读(r) 写(w) 执行(x) chmod u=rwx,g=rx,o=rx a.txt
给文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
通过数字变更
规则:r=4 w=2 x=1
rwx = 4+2+1 = 7 r-x = 4+1=5 r-x = 4+1 =5
chmod 755 /home/a.txt
三、进程管理
| 场景 | 操作 |
|---|---|
| 运行时间较长,将进程放入后台 | ctrl+z(后台挂起,进程暂停状态),或者明确启动的进程非常耗时,在命令结尾处添加一个 " &" 符号(注意,& 前面有空格) |
| 查看进程 | ps,查看正在运行的进程,ps aux查看系统所有进程,ps -ef显示所有进程信息 |
| 持续监听进程状态 | top,每3秒刷新一次 |
| 查看当前终端放入后台的工作 | jobs,-l,列出进程的 PID 号,-r,只列出运行中的进程,-s,只列出已停止的进程 |
| 后台进程恢复(运行的与暂停的) | 每个被放入后台的命令都会被分配一个工作号。第一个被放入后台的命令,工作号是 1;第二个被放入后台的命令,工作号是 2,以此类推.用jobs可看到进程的工作号,fg %工作号 可恢复进程放入前台执行,bg %工作号 可恢复后台暂停的进程 |
| 查看进程调用的文件或调用文件的进程 | lsof ,-p pid 列出某个pid打开的文件,lsof /usr/lib ,查找调用lib的进程 |
| 调整进程优先级 | ps -le 查找出PRI 和 NI,PRI (最终值) = PRI (原始值) + NI,修改NI(-20~19)从而改变优先级别,nice 命令不能修改正在运行的进程,普通用户(0~19)只可调大,renice命令可修改正在运行的进程 |
| 后台命令脱离终端运行 | nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行, nohup find / -print > /root/file.log & |
| kill | -1,让进程立即关闭.然后重新读取配置文件之后重启;-9,立即结束程序的运行,强制中止;-15,正常结束进程(不写参数默认就是15),killall find(pkill find),所有进程名为find的被杀死 |
ps -aux命令
| 表头 | 含义 |
|---|---|
| USER | 该进程是由哪个用户产生的。 |
| PID | 进程的 ID。 |
| %CPU | 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。 |
| %MEM | 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。 |
| VSZ | 该进程占用虚拟内存的大小,单位为 KB。 |
| RSS | 该进程占用实际物理内存的大小,单位为 KB。 |
| TTY | 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长 |
| STAT | 进程状态。常见的状态有以下几种: |
| -D: | 不可被唤醒的睡眠状态,通常用于 I/O 情况。-R:该进程正在运行。-S:该进程处于睡眠状态,可被唤醒。 |
| -T: | 停止状态,可能是在后台暂停或进程处于除错状态。-X:死掉的进程(应该不会出现)。-<:高优先级(以下状态在 BSD 格式中出现)。-N:低优先级。-L:被锁入内存。-s:包含子进程。-l:多线程(小写 L)。 |
| START | 该进程的启动时间。 |
| TIME | 该进程占用 CPU 的运算时间,注意不是系统时间。 |
| COMMAND | 产生此进程的命令名。 |
四、Linux三剑客
案例: ps aux|grep "/bin/sh /data/dolphinscheduler/exec/process/7349039538368/7349624414912_6/1107/4613/ods/hc/ods_nr_base_sso_user_info_f.sh"|grep -v grep|awk '{print $2}'|xargs kill
找出这个进程名并且全部杀掉
grep、sed 和 awk 命令,俗称 linux 界里的三剑客
| 命令 | 特点 | 场景 |
|---|---|---|
| grep | 过滤 | grep是过滤最快的 |
| sed | 替换、修改文件内容、取航 | 对文件内容进行替换,取出某个范围的内容 |
| awk | 取列、统计计算 | 取列、对比、比较、统计计算 |
grep
| 场景 | 使用 |
|---|---|
| 匹配前面一个字符后面是一个a的行 | grep ".a" grep_t.txt |
| 匹配前后有字符,中间有a的行号 | grep ".a." grep_t.txt |
| 匹配 0-9 范围内的任意字符 | grep [1-9] grep_t.txt |
| 匹配指定单词外的任意字符 | grep "[^a]" grep_t.txt |
| 只匹配开头行 | grep "^[^a]" grep_t.txt or grep -v "[^a]" grep_t.txt |
| 过滤出bing 跟 Bing | grep -E "(b|B)ing" grep_t.txt |
| 直接过滤掉大小写 bing | grep -i bing grep_t.txt |
| 查找当前目录下以t开头的文件中,e后面存在0或多个l的行 | grep ‘el*’ t*(el的星号是个正则符,t的星号是个通配符) |
| grep搜索路径下的全部文件 | grep ‘el*’ * -r -n |
| 查找以xiao开头的行,以lan结束的行 | grep '^xiao' file -n | grep 'lan$' |
| 查找以xiao开头的行,且不以lan结束的行 | grep '^xiao' file -n | grep 'lan$' -v |
sed
sed命令核心功能(增删改查),s,替换;p,显示;d,删除;c/a/i,增加(c,代替这行内容;a,向指定的行或每一行追加内容,i,向指定的行或每行插入内容)
| 场景 | 使用 |
|---|---|
| 只查找第 2 行数据 | sed -n '2p' sed_text.txt |
| 查找 1 到 5 行 | sed -n '1,5p' sed_text.txt |
| 查找log 11:26到11:30 | sed -n '/11:26:30/,/11:30:00/p' sed_text.txt |
| 指定删除第2行数据 | sed '2d' sed_text.txt |
| 删除第1行到第5行数据 | sed '1,5d' sed_text.txt |
| 查找删除 xiaolan 这个单词 | sed '/xiaolan/d' sed_text.txt |
| 获取ip地址 | ip a s ens33 |sed -rn '3s#(^.* )(.)(/.$)#\2#gp' |
| 删除文件中的空行包含井号的行 | sed -r '/^$|#/d' /etc/ssh/sshd_config |
| 将hello修改为xiaolan | sed -i 's/hello/xiaolan/' file.txt |
| -a,行后插入新行 | sed -i '/特定字符串/a 新行字符串' fileName |
| -i,行前插入新行 | sed -i '/特定字符串/i 新行字符串' fileName |
| -c,修改指定内容行 | sed -i '/特定字符串/c csc lwl' fileName |
awk
| 场景 | 使用 |
|---|---|
| 查找nginx的进程id | ps aux|grep nginx|grep -v grep|awk '{print $2}' |
| 使用":"分割,打印文件第1列 | awk -F ':' '{print $1}' /etc/passwd |
| 使用":"分割,打印文件第1,2,3列 | awk -F ':' '{print 2, $3}' /etc/passwd |
| 格式化输出 | awk -F ':' '{ printf("%5s %5s %5s\n", 2, $3) }' /etc/passwd |
| 使用多个分隔符,先使用"1"分割,然后对分割结果再使用":"分割,打印文件第1,2,3列 | awk -F '[1 :]' '{print 2, $3}' /etc/passwd |
| 使用-v设置变量,1+a:在第1列后面添加a列 | awk -F ':' -va='666' '{print 1+a}' /etc/passwd |
| 使用-v设置变量,1b:在第1列后面拼接b值作为新的1列 | awk -F ':' -va='666' -vb='abc' '{print 1+a, $1b}' /etc/passwd |
| 根据关键字匹配某一行 | awk '/root/' /etc/passwd |
| 统计某个文件夹下的文件占用的字节数 | ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}' |
| 显示第5行和第6行 | awk -F: 'NR==5 || NR==6{print}' /etc/passwd |
| 统计/home目录下不同用户的普通文件的总数是多少 | ls -l|awk 'NR!=1 && !/^d/{sum[$3]++} END{for (i in sum) printf "%-6s %-5s %-3s \n",i," ",sum[i]}' |
补充中。。。