linux常用命令

  • Post author:
  • Post category:linux




命令可以通过–help查看参数使用



ls

查看目录文件



cd

改变目录

例:

cd … 到上级目录

cd – 进入上次工作路径



pwd

打印当前工作目录



mkdir

创建文件夹

例:

mkdir -p /test/test1 能一次建好不存在的目录(-p代表–parent)



vi

文本编辑

例:

vi a.txt



find

用来在指定目录下查找文件

例:

find . -name “*.conf” (查找当前目录及其子目录下所有conf后缀文件)



rm

删除文件/文件夹

例:

rm -r -f test 强制并递归删除test文件夹(-r代表–recursive,-f代表–force)



mv

移动文件/文件夹

例:

mv a.txt …/ 移动a.txt到上级目录



cp

拷贝文件/文件夹



less

分页查看文件

例:

less a.log

/字符串:向下搜索“字符串”的功能

?字符串:向上搜索“字符串”的功能

n:重复向下/向上搜索(与 / 或 ? 有关)

N:重复反向向下/向上搜索(与 / 或 ? 有关)

shift+g 跳到文件末尾

b: 往前翻一页

f: 往后翻一页

q 退出less 命令



tail

查看文件末尾内容

例:

tail -f -100 a.log | grep -5 “hello”循环查看a.log末尾100行,从100行中查找匹配hello字符串,展示字符串所在位置的上下5行

(-f代表–follow,| 为管道符,将前面命令执行的结果作为参数到后面命令执行,但多数命令并不支持管道,这就要用到后面说的xargs命令)



df

显示磁盘使用情况

例:

df -l 显示本地磁盘使用情况(-l代表–local)

-h可以转换为易读的单位



grep

grep(Global Regular Expression Print) 全局正则表达式搜索,在一个或多个文件中搜索字符串模板

例:

grep -C3 “test” *.log(在当前文件夹下的所有log文件搜索“test”字符串,并显示前后三行)

ps -ef | grep java (通过管道符在ps输出内容中查找java进程)

-A n –after-context显示匹配字符后n行

-B n –before-context显示匹配字符前n行

-C n –context 显示匹配字符前后n行

-c –count 计算符合样式的列数

-i 忽略大小写

-l 只列出文件内容符合指定的样式的文件名称

-f 从文件中读取关键词

-n 显示匹配内容的所在文件中行数

-R 递归查找文件夹



ps

查看进程信息(pid,ppid,进程执行时的命令)

例:

ps -ef



top

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

例:

top -p 1(查看进程id为1的进程相关信息)

top – 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35

Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie

Cpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st

Mem: 32949016k total, 14411180k used, 18537836k free, 169884k buffers

Swap: 32764556k total, 0k used, 32764556k free, 3612636k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java

前五行是当前系统情况整体的统计信息区。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

14:06:23 — 当前系统时间

up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)

2 users — 当前有2个用户登录系统

load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行,Tasks — 任务(进程),具体信息说明如下:

系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行,cpu状态信息,具体属性说明如下:

5.9%us — 用户空间占用CPU的百分比。

3.4% sy — 内核空间占用CPU的百分比。

0.0% ni — 改变过优先级的进程占用CPU的百分比

90.4% id — 空闲CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

0.2% si — 软中断(Software Interrupts)占用CPU的百分比

备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!

第四行,内存状态,具体信息如下:

32949016k total — 物理内存总量(32GB)

14411180k used — 使用中的内存总量(14GB)

18537836k free — 空闲内存总量(18GB)

169884k buffers — 缓存的内存量 (169M)

第五行,swap交换分区信息,具体信息说明如下:

32764556k total — 交换区总量(32GB)

0k used — 使用的交换区总量(0K)

32764556k free — 空闲交换区总量(32GB)

3612636k cached — 缓冲的交换区总量(3.6GB)

第六行,空行。

第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)



kill

结束进程

例:

kill -9 PID(是操作系统从内核级别强制杀死一个进程,进程立即结束运行,不能被阻塞或者忽略)

kill -15 PID(可以理解为操作系统发送一个信号告诉应用主动关闭,信号只是通知对应的进程要进行”安全、干净的退出”,程序接到信号之后,退出前一般会进行一些”准备工作”,如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在”准备工作”进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号,JVM进程在接收到kill -15信号通知的时候,开发者也是可以自定义做一些额外的事情,通过JDK中提供的shutdown hook实现的。JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子)

JVM关闭钩子例子:

public class ShutdownHookTest {
    public static void main(String[] args) {
        boolean flag = true;
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            System.out.println("hook execute...");
        }));
        while (flag) {
            // app is runing
        }
        System.out.println("main thread execute end...");
    }
}



free

显示系统内存使用情况



netstat

显示网络状态

例:

netstat -tunlp | grep 8080(查看占用端口8080的进程,而后可以根据显示的pid处理进程)



xargs

给命令传递参数的一个过滤器,也是组合多个命令的一个工具。能够捕获一个命令的输出,然后传递给另外一个命令。之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数。

例:

ls -a | grep a(是对ls输出的文本进行匹配)

ls -a | xargs grep a(是对ls输出文本中的每个文件/文件夹的内容进行匹配)



版权声明:本文为xiaomisolo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。