Linux常用系统命令详解

文章目录

一、Linux目录结构

我们知道Linux系统是一个文件系统,它的文件系统就类似windows系统下的磁盘文件系统。

我们连接上一台linux系统的服务器。 输入命令 :

ls -l

我们可以看到 linux系统的根目录下有这些目录

image-20230731192254301

有些是linux默认的目录,有些是用户自定义的目录。

Linux默认的文件目录大概这样:

img

各目录的功能和作用:

/bin:二进制可执行程序、命令
bin 是 Binary (二进制文件) 的缩写, 这个目录存放一些可执行的程序、命令。

/boot:系统启动所需的一些内核文件。
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :系统中的设备(硬件在Linux中通过“文件”来标识)
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

/etc:存放系统、软件(如用户安装的软件)的配置文件。(其中/etc/profile 文件可修改环境变量)
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

比如平时我们配置jdk 的路径就在 etc 下的profile

/home:普通用户的家目录
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。一般用户自定义的软件就放在这个目录。或者自己新建具有明显标识的目录,如 app ,web,deploy等。

/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

/mnt:挂载外部存储设备的文件目录
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc: 内存信息
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:root用户的家目录
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:系统的可执行命令。
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
该目录存放一些服务启动之后需要提取的数据。

/sys:

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:系统临时文件存放目录
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

该目录对所有用户都是可读可写可执行

/usr:共享资源目录(多个用户可以共享该目录中的程序)
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:
内核源代码默认的放置目录。

/var:易变文件的存放目录,日志
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

二、Linux基础命令

[root@localhost~]

解释:

[当前用户 分隔符 主机名 家目录]

更改主机名为love:hostnamectl set-hostname love

#管理员权限

$ 普通用户权限

常用系统工作命令

1、echo 输出字符串或者变量取值后的值

echo
	> #覆盖
	>> #追加
例如:
echo hello #输出hello字符串
echo $SHELL #查看当前用户用什么做解释,输出环境变量
echo hello > 1.txt #将字符串"hello"覆盖1.txt文件内容,若没有1.txt则创建一个1.txt文件,并写入hello
echo hello >> 1.txt #将字符串"hello"追加到1.txt文件中。

image-20230729102303619

image-20230802140416575

2、date 显示或者设置系统时间与日期

date #输出具体年月日信息
date "+%Y-%m-%d" #输出格式为: "年-月-日"
date "+%Y-%m-%d %H:%M:%S" #输出格式为: "年-月-日 小时:分钟:秒"
date "+%j" #显示今天是今年的第几天

image-20230729102201939

image-20230729102237195

image-20230729102540711

image-20230729102729231

3、timedatectl 设置系统时间

timedatectl status #查看当前状态,其中EDT为东部夏令时标准时间,UTC为世界标准时间
timedatectl list-timezones #查看区域列表
timedatectl set-zone Asia/Shanghai #设置(更改)时区为上海

image-20230729103410104

image-20230729104858778

image-20230729105820808

4、reboot 重启系统

reboot #重启系统

5、poweroff 关机

poweroff #立刻关机
shutdown now #立刻关机
shutdown #等一会关机
shutdown 23:00 #在23:00关机并发送关机通知
shutdown 23:00 #"系统将要关机" #给出关机警告,然后在23:00关机

总结而言,poweroff 命令用于立即关闭系统并关闭电源,而 shutdown 命令则提供了更多的关机计划和用户通知的功能。

6、wget 在终端里面下载网络文件

wget
	-b #后台下载模式
	-P #下载到指定目录
	-t #最大尝试次数
	-c #断点续传
	-p #下载页面里面所有资源
	-r #递归下载
	
pwd #显示当前目录的绝对路径	

image-20230729112205975

7、ps 用于查看系统中的进程状态

一般与“-aux”一起使用

ps -aux是一个常用的ps命令选项组合。它会列出当前所有进程的详细信息,包括用户名、进程ID(PID)、CPU使用情况、内存使用情况等。

ps
	-a #显示所有进程
	-u #用户以及其他详细信息
	-x #显示没有控制终端的进程
ps -aux

image-20230729140729941

  • 其中:

    USER:进程所有者

    PID:进程ID

    %CPU:运算器占用率

    %MEM:内存占用率

    VSZ:虚拟内存占用率

    RSS:占用的固定内存量

    TTY:所在终端

    STAT:进程状态,

    进程状态又分为:

    R(正在运行)

    S(中断)

    D(不可中断)

    Z(僵死)

    T(停止)

    <(高优先级)

    N(低优先级)

    L(被锁进内存)

    s(包含子进程)

    I(多线程)

ps -aux |grep ssh #在Linux系统中查找所有关于 SSH 的进程信息。通过这个命令,您可以找到与 SSH 相关的正在运行的进程.

8、pstree 用树形图的形式显示进程之间的关系

pstree #进程树

image-20230729141903143

9、top 动态显示系统进程

top #显示的信息有系统时间、运行时间、登录的终端数、系统负载等

image-20230729142632656

10、pidof 指定查询某个进程服务

pidof sshd #查询ssh进程
kill 进程ID #杀进程
killall sshd #同时杀掉多个进程,这里表示同时杀掉ssh的多个进程

image-20230729143130336

11、man 用于查看命令的手册页面(manual pages)。

man

man命令后面跟着一个命令或者一个命令的选项,可以显示关于该命令的详细信息。

系统状态检测命令

1、ifconfig、ip a 获取网卡配置与网络状态等

ifconfig #查看网卡流量以及IP地址
ip a #查看IP地址
ifconfig 网卡 #查看单个网卡

image-20230729145010192

image-20230729145110732

image-20230729145352663

2、uname 用于查看系统内核版本与系统架构,常与-a参数一起使用

uname -a 

image-20230804115426396

3、uptime 查看系统负载信息

uptime

一般来说,负载既不要越高越好也不要越低越好,建议负载值保持在1左右,不要超过5.

image-20230729150059618

4、free 用于显示当前系统内存使用量

free #显示出物理内存和交换内存
free -h #以G为单位显示出物理内存和交换内存
free -m #以MB(兆)为单位显示出物理内存和交换内存

image-20230729150828115

5、who 查看当前登入主机的用户终端信息

who #其中tty是终端登录,pts是远程登录

image-20230729151254867

6、last 调取主机的被访问记录

last #可以查看谁登录的,使用什么方式登录的,使用的IP,以及什么时间登录的

image-20230729151818831

7、ping 测试主机之间的连通性

ping
	-c #总共发送的次数
	例如:ping -c3 114.114.114.144 #ping3次114.114.114.114
	-l #指定网卡名称
	-i #每次ping的时间间隔
	-W #最长等待时间

image-20230729152710826

8、tracepath 路由追踪

tracepath 目标IP

image-20230729153258853

​ 在Windows中,路由追踪命令为:tracert 目的IP:

image-20230729153708541

9、netstat用来显示网络接口、路由表、接口状态等信息

netstat
		-a #显示所有socket连接
		-p #显示正在使用的socket信息
		-t #显示tcp协议连接状态
		-n #使用IP地址,不使用域名

netstat -r #查看网关信息
route -n #查看路由信息
netstat -ano #查看监听了哪些端口

image-20230729154433549

image-20230729154500649

10、history 显示执行过的历史命令

history #默认显示1000条历史命令记录

image-20230729160856695

​ 在家目录下,也能查看历史命令

image-20230729162300076

cat查看.zsh_history,显示出历史命令记录

image-20230729162338869

把默认显示1000条历史命令改为只显示10条历史命令

vim /etc/profile #把里面的1000改为10即可
#退出时:ESC :wq

查找定位文件命令

1、pwd 显示用户当前所处的工作目录

image-20230729163520016

2、cd 用于切换当前的工作路径

cd .. #返回上一级目录
cd - #返回上一次目录
cd / #返回到根目录
cd ~ #返回到家目录

image-20230729163952435

image-20230729164252234

useradd 用户名 #添加一个用户
su 用户名 #切换用户
cat /etc/passwd #查看用户家目录

image-20230729164858052

image-20230729164935582

3、ls显示目录中的文件信息

ls
  -a #显示文件权限和属性
  -l #显示文件权限和属性
  例:ls / #列出根路径目录
  	  ls -lh #说人话,h表示human,文件大小以人类能看懂的格式输出

4、tree 以树形的形式显示目录结构

tree是一个用于以树状结构显示目录和文件的命令。它以递归方式遍历目录并显示其内容,让用户可以清晰地查看目录结构。

tree

image-20230729170146130

5、find 按照指定的条件来查找文件所对应的位置

find
	-name #匹配名称
		例如:find / -name root #/表示根,在根目录下面查找所有文件为名为root的目录找出来
	-type #指定文件类型查找
		f #(普通文件)
		d #(目录)
		l #(符号链接)
    -a #连接两个条件,两个条件都成立
    -o #连接两个条件,一个条件成立就可以
	-perm #匹配权限
	-user #匹配所有者
	-group #匹配组
	-exec ...{}\;
		例如:find / -name zc*.txt -exec cp -a {} /root \; #在根目录下找所有zc.txt,*表示匹配所有(zc1,zc2等都能匹配到),-exec表示执行命令,-cp表示执行的命令,表示执行的命令是复制,-a表示尽可能保持文件的结构和属性,{}表示匹配到的所有文件,/root表示复制到根目录下。

image-20230729190213084

image-20230729190759689

touch #创建空白文件
	例如:touch jw1.txt
rm #删除文件	
	例如:rm jw*.txt 

image-20230729192533723

image-20230729195015561

cp -r text / #将text文件复制到根目录下,现在在家目录下

image-20230729193018381

6、locate 按照名称的快速索引搜索文件

updatedb #使用locate前先更新以下db数据库
locate jw2.txt #快速索引搜索文件jw2.txt

image-20230729202714958

7、whereis 按照名称快速搜索二进制程序

whereis ls #显示ls命令的帮助文档具体位置

image-20230729203826109

8、which 按照名称快速搜索二进制程序

which ls #不显示帮助文档具体位置

image-20230729203839702

文本文件编辑命令

1、cat 用于查看纯文本文件

cat jw1.txt #查看jw1.txt内容
cat -n jw1.txt #查看jw1.txt时,标记行号

image-20230729205006057

image-20230729205155884

2、more 用于查看纯文本文件,适用于内容较多时查看

more jw1.txt #查看jw1.txt内容时,先只列出一部分内容,然后按空格会再列出一部分内容。

3、head 用于查看纯文本文件前n行

head -n 8 jw1.txt #查看jw1.txt文件,只显示前8行

image-20230729210510701

4、tail用于查看纯文本文件后n行

tail -n 5 jw1.txt #查看jw1.txt文件,只显示后5行

image-20230729210750628

5、tr 用于替换文本内容

 head -n 5 jw1.txt | tr [a-z] [A-Z] #查看jw1.txt的前五行,并将小写字母换成大写字母进行输出
 

image-20230729212408568

6、wc 用于统计指定文本的行数

wc 
  -l #只显示行数
  例如:wc -l jw1.txt 
  	   wc -l /etc/passwd #统计linux里面一共有多少个用户
  	   cat /etc/passwd | grep nologin | wc -l #grep表示过滤,wc -l表示行数输出
  	   cat /etc/passwd |grep -v /bin/bash |wc -l #-v表示反选,意思是带有/bin/bash的不过滤出来
  -w #只显示单词数
  -c #只显示字节数

image-20230729212932686

image-20230729213944775

image-20230729220009562

7、stat查看文件的具体存储细节和时间信息

stat 文件名

image-20230729220234723

8、grep 过滤

grep  #过滤行 
   -E #调用扩展正则
   -o #只显示匹配具体的内容
   -c #仅显示找到的行数
   -i #忽略大小写
   -n #显示行号
   -v #反向选择

9、cut 按列提取

cut -d : -f 1 /etc/passwd #查看所有用户名,-d表示分割,以“:”分割,-f 1表示第一列

image-20230729220840888

10、diff 比较多个文件之间的差异

cp /etc/passwd ~ #将passwd复制到家目录
useradd text #加添一个text用户
diff /etc/passwd passwd #比较etc/passwd 和passwd的区别

image-20230729221658639

10、>,>> 输出重定向

​ **>**会覆盖目标的原有内容,当文件存在时,会先删除原文件,再重新创建文件,然后把内容写入该文件,否则直接创建文件。

**>>**会在目标原有内容后追加内容,当文件存在时直接在文件末尾进行内容追加,不会删除原文件,否则直接创建文件。

12、vim 编辑器,记事本

vim 文件名 #进入命令模式
	i #按i键切换到输入模式,在光标当前位置开始输入文件。
	ESC #按ESC键退出输入模式,切换到命令模式
	: #切换到末行命令模式
	:w #保存文件
	:q #退出Vim编辑器。
	:q! #强制退出Vim编辑器,不保存修改。
	
   

image-20230802152021783

​ 基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

以下是普通模式常用的几个命令:

  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • : – 切换到底线命令模式,以在最底一行输入命令。
  • a – 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O – 在当前行的上方插入一个新行,并进入插入模式。
  • dd – 删除当前行。
  • yy – 复制当前行。
  • p – 粘贴剪贴板内容到光标下方。
  • P – 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。
  • :w – 保存文件。
  • :q – 退出 Vim 编辑器。
  • :q! – 强制退出Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式
底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
  • :q!:强制退出Vim编辑器,不保存修改。

ESC 键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:

image-20230802155038094

ctrl+z  #在vim中按ctrl+z会把进程放到后台

jobs #查看系统后台进程

12、uniq 去除文本中连续的重复行

uniq jw3.txt #去除jw3.txt文本中连续的重复行
	-c #统计次数

image-20230729222756806

image-20230729222129917

文件目录管理命令

1、touch创建空白文件或者设置文件时间

touch  #创建空文件,更新时间标记
	-a #修改读取时间
	-m #修改修改时间
	-d #同时修改读取和修改时间

image-20230730125612546

2、mkdir 用于创建空白目录

mkdir #创建目录
	例如:mkdir join #表示在该目录下创建一个join目录
   		 mkdir -p join/j1/j2/j3 #表示在join目录下创建j1目录,并在j1目录下创建j2目录,并在j2目录下创建j3目录

image-20230730130517027

tree join #查看join目录的结构

image-20230730130455388

3、cp 用于复制文件或目录

cp 
  -p #保留原始文件的属性
  -r #递归持续复制
  -i #若目标文件存在则询问是否覆盖
  -a #此参数的效果和同时指定"-dpR"参数相同

4、mv 用于剪切或者重命名文件

例如:
	mv jw2.txt jw8.txt #将jw2.txt重命名为jw8.txt

image-20230730132009832

5、rm 用于删除文件或目录

rm 
  -f #强制执行
  -i #删除前询问
  -r #删除目录,递归删除目录中的内容
  -v #显示删除过程
  例如:rm -rf jw2.txt #表示强制无提示删除jw2.txt
  	   rm -rf foo[abc] #表示删除fooa,foob,fooc

image-20230730132543655

image-20230802165828414

6、dd按照指定大小的数据块个数来复制或转换文件


if #输入的文件名称
of #输出的文件名称
bs #块的大小
count #块的数量

	例如:dd if=/dev/zero of=jwfile count=1 bs=560M

image-20230730134214292

7、file 查看文件类型

vim jq.txt #生成一个jq的文本文件,并写入
fie jq.txt #查看jq.txt的文件类型

image-20230730135403255

8、tar 对文件进行打包压缩或者解压

tar
   -c #创建压缩文件
   -x #解开压缩文件
   -t #查看压缩文件里面有哪些文件
   -z #Gzip压缩格式
   -j #bzip2压缩格式
   -v #显示过程
   -f #目标文件名称
   
   例如:tar -cvf text.tar text #压缩文件text,压缩后的文件名为text.tar
   		tar -czf  #Gzip压缩格式
   		tar -xvf text.tar #解压text.tar

image-20230730140917016

image-20230730141610932

gzip

gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

chmod -x jw1.tar.gz
gzip .gz结尾的压缩文件 #压缩
gunzip 文件 #解压缩
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值