文章目录
一、Linux目录结构
我们知道Linux系统是一个文件系统,它的文件系统就类似windows系统下的磁盘文件系统。
我们连接上一台linux系统的服务器。 输入命令 :
ls -l
我们可以看到 linux系统的根目录下有这些目录
有些是linux默认的目录,有些是用户自定义的目录。
Linux默认的文件目录大概这样:
各目录的功能和作用:
/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文件中。
2、date 显示或者设置系统时间与日期
date #输出具体年月日信息
date "+%Y-%m-%d" #输出格式为: "年-月-日"
date "+%Y-%m-%d %H:%M:%S" #输出格式为: "年-月-日 小时:分钟:秒"
date "+%j" #显示今天是今年的第几天
3、timedatectl 设置系统时间
timedatectl status #查看当前状态,其中EDT为东部夏令时标准时间,UTC为世界标准时间
timedatectl list-timezones #查看区域列表
timedatectl set-zone Asia/Shanghai #设置(更改)时区为上海
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 #显示当前目录的绝对路径
7、ps 用于查看系统中的进程状态
一般与“-aux”一起使用
ps -aux
是一个常用的ps
命令选项组合。它会列出当前所有进程的详细信息,包括用户名、进程ID(PID)、CPU使用情况、内存使用情况等。
ps
-a #显示所有进程
-u #用户以及其他详细信息
-x #显示没有控制终端的进程
ps -aux
-
其中:
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 #进程树
9、top 动态显示系统进程
top #显示的信息有系统时间、运行时间、登录的终端数、系统负载等
10、pidof 指定查询某个进程服务
pidof sshd #查询ssh进程
kill 进程ID #杀进程
killall sshd #同时杀掉多个进程,这里表示同时杀掉ssh的多个进程
11、man 用于查看命令的手册页面(manual pages)。
man
man
命令后面跟着一个命令或者一个命令的选项,可以显示关于该命令的详细信息。
系统状态检测命令
1、ifconfig、ip a 获取网卡配置与网络状态等
ifconfig #查看网卡流量以及IP地址
ip a #查看IP地址
ifconfig 网卡 #查看单个网卡
2、uname 用于查看系统内核版本与系统架构,常与-a参数一起使用
uname -a
3、uptime 查看系统负载信息
uptime
一般来说,负载既不要越高越好也不要越低越好,建议负载值保持在1左右,不要超过5.
4、free 用于显示当前系统内存使用量
free #显示出物理内存和交换内存
free -h #以G为单位显示出物理内存和交换内存
free -m #以MB(兆)为单位显示出物理内存和交换内存
5、who 查看当前登入主机的用户终端信息
who #其中tty是终端登录,pts是远程登录
6、last 调取主机的被访问记录
last #可以查看谁登录的,使用什么方式登录的,使用的IP,以及什么时间登录的
7、ping 测试主机之间的连通性
ping
-c #总共发送的次数
例如:ping -c3 114.114.114.144 #ping3次114.114.114.114
-l #指定网卡名称
-i #每次ping的时间间隔
-W #最长等待时间
8、tracepath 路由追踪
tracepath 目标IP
在Windows中,路由追踪命令为:tracert 目的IP:
9、netstat用来显示网络接口、路由表、接口状态等信息
netstat
-a #显示所有socket连接
-p #显示正在使用的socket信息
-t #显示tcp协议连接状态
-n #使用IP地址,不使用域名
netstat -r #查看网关信息
route -n #查看路由信息
netstat -ano #查看监听了哪些端口
10、history 显示执行过的历史命令
history #默认显示1000条历史命令记录
在家目录下,也能查看历史命令
cat查看.zsh_history,显示出历史命令记录
把默认显示1000条历史命令改为只显示10条历史命令
vim /etc/profile #把里面的1000改为10即可
#退出时:ESC :wq
查找定位文件命令
1、pwd 显示用户当前所处的工作目录
2、cd 用于切换当前的工作路径
cd .. #返回上一级目录
cd - #返回上一次目录
cd / #返回到根目录
cd ~ #返回到家目录
useradd 用户名 #添加一个用户
su 用户名 #切换用户
cat /etc/passwd #查看用户家目录
3、ls显示目录中的文件信息
ls
-a #显示文件权限和属性
-l #显示文件权限和属性
例:ls / #列出根路径目录
ls -lh #说人话,h表示human,文件大小以人类能看懂的格式输出
4、tree 以树形的形式显示目录结构
tree
是一个用于以树状结构显示目录和文件的命令。它以递归方式遍历目录并显示其内容,让用户可以清晰地查看目录结构。
tree
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表示复制到根目录下。
touch #创建空白文件
例如:touch jw1.txt
rm #删除文件
例如:rm jw*.txt
cp -r text / #将text文件复制到根目录下,现在在家目录下
6、locate 按照名称的快速索引搜索文件
updatedb #使用locate前先更新以下db数据库
locate jw2.txt #快速索引搜索文件jw2.txt
7、whereis 按照名称快速搜索二进制程序
whereis ls #显示ls命令的帮助文档具体位置
8、which 按照名称快速搜索二进制程序
which ls #不显示帮助文档具体位置
文本文件编辑命令
1、cat 用于查看纯文本文件
cat jw1.txt #查看jw1.txt内容
cat -n jw1.txt #查看jw1.txt时,标记行号
2、more 用于查看纯文本文件,适用于内容较多时查看
more jw1.txt #查看jw1.txt内容时,先只列出一部分内容,然后按空格会再列出一部分内容。
3、head 用于查看纯文本文件前n行
head -n 8 jw1.txt #查看jw1.txt文件,只显示前8行
4、tail用于查看纯文本文件后n行
tail -n 5 jw1.txt #查看jw1.txt文件,只显示后5行
5、tr 用于替换文本内容
head -n 5 jw1.txt | tr [a-z] [A-Z] #查看jw1.txt的前五行,并将小写字母换成大写字母进行输出
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 #只显示字节数
7、stat查看文件的具体存储细节和时间信息
stat 文件名
8、grep 过滤
grep #过滤行
-E #调用扩展正则
-o #只显示匹配具体的内容
-c #仅显示找到的行数
-i #忽略大小写
-n #显示行号
-v #反向选择
9、cut 按列提取
cut -d : -f 1 /etc/passwd #查看所有用户名,-d表示分割,以“:”分割,-f 1表示第一列
10、diff 比较多个文件之间的差异
cp /etc/passwd ~ #将passwd复制到家目录
useradd text #加添一个text用户
diff /etc/passwd passwd #比较etc/passwd 和passwd的区别
10、>,>> 输出重定向
**>**会覆盖目标的原有内容,当文件存在时,会先删除原文件,再重新创建文件,然后把内容写入该文件,否则直接创建文件。
**>>**会在目标原有内容后追加内容,当文件存在时直接在文件末尾进行内容追加,不会删除原文件,否则直接创建文件。
12、vim 编辑器,记事本
vim 文件名 #进入命令模式
i #按i键切换到输入模式,在光标当前位置开始输入文件。
ESC #按ESC键退出输入模式,切换到命令模式
: #切换到末行命令模式
:w #保存文件
:q #退出Vim编辑器。
:q! #强制退出Vim编辑器,不保存修改。
基本上 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 键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
ctrl+z #在vim中按ctrl+z会把进程放到后台
jobs #查看系统后台进程
12、uniq 去除文本中连续的重复行
uniq jw3.txt #去除jw3.txt文本中连续的重复行
-c #统计次数
文件目录管理命令
1、touch创建空白文件或者设置文件时间
touch #创建空文件,更新时间标记
-a #修改读取时间
-m #修改修改时间
-d #同时修改读取和修改时间
2、mkdir 用于创建空白目录
mkdir #创建目录
例如:mkdir join #表示在该目录下创建一个join目录
mkdir -p join/j1/j2/j3 #表示在join目录下创建j1目录,并在j1目录下创建j2目录,并在j2目录下创建j3目录
tree join #查看join目录的结构
3、cp 用于复制文件或目录
cp
-p #保留原始文件的属性
-r #递归持续复制
-i #若目标文件存在则询问是否覆盖
-a #此参数的效果和同时指定"-dpR"参数相同
4、mv 用于剪切或者重命名文件
例如:
mv jw2.txt jw8.txt #将jw2.txt重命名为jw8.txt
5、rm 用于删除文件或目录
rm
-f #强制执行
-i #删除前询问
-r #删除目录,递归删除目录中的内容
-v #显示删除过程
例如:rm -rf jw2.txt #表示强制无提示删除jw2.txt
rm -rf foo[abc] #表示删除fooa,foob,fooc
6、dd按照指定大小的数据块个数来复制或转换文件
if #输入的文件名称
of #输出的文件名称
bs #块的大小
count #块的数量
例如:dd if=/dev/zero of=jwfile count=1 bs=560M
7、file 查看文件类型
vim jq.txt #生成一个jq的文本文件,并写入
fie jq.txt #查看jq.txt的文件类型
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
gzip
gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
chmod -x jw1.tar.gz
gzip .gz结尾的压缩文件 #压缩
gunzip 文件 #解压缩