跳转至

关于Linux的一些知识

Linux是类Unix的操作系统

文件夹分类

/boot

这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件

/dev

dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的

/etc

etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录

user/lib

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

/lost+found

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

/media

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

/mnt

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

/proc

proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器

/root

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

/srv

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

/sys

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

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

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

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

/tmp

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

/usr

usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin

系统用户使用的应用程序。

/usr/sbin

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

/var

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

/run

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

注:

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

基础命令

sudo su#切root

sync#同步内存数据到硬盘中

logout#退出root
exit#关闭终端(退出root或者直接关闭)

useradd test#创建账号test 在目录/home/test下
useradd -d /home/us test#指定目录

passwd test#设置密码

# 保留家目录删除
userdel test
# 但是无法登入

# 删除家目录同时删除用户
userdel -r test

whoami#查询当前用户

vim

是Linux的文本编辑器,学会用Vim是一个非常需要被掌握的技能

三种模式

  1. 正常模式(浏览与技能)
  2. j k h l表示上下左右移动
  3. dd删除当前行
  4. u撤回上一步的请求
  5. yy复制当前行
  6. p粘贴内容
  7. 插入模式
  8. i启动,esc退出
  9. 正常执行操作
  10. 命令行模式
  11. 输入 :w $\rightarrow$ Save(保存)
  12. 输入 :q $\rightarrow$ Quit(退出)
  13. 输入 :wq $\rightarrow$ 保存并退出
  14. 输入 :q! $\rightarrow$ 强行退出

更多参考

Linux vi/vim | 菜鸟教程

文件目录

# 显示当前绝对路径(绝对路径就是全路径,相对路径就是相对于当前文件夹的路径)
pwd
# 工作目录 Docker / Kubernetes

# 查看当前文件夹文件信息
ls
-a    # 查看全部
-l    # 查看单行详细信息
-h    # 人类看懂的
ls -l 目录    # 指定文件夹
ls -al[-la]

# 进入指定文件夹(支持绝对路径或者相对路径)
cd ~    # 回到家目录
# 或者使用
cd     # 使用空格回到家目录
# 回到上一层目录
cd ..    # 只能回到根目录之前

# 创建文件夹
mkdir test    # 创建test的文件夹
# 创建多级目录
mkdir -p robin/test    # 先创建robin,再在robin文件夹下创建test

# 删除空文件夹
rmdir test
# 删除文件夹(可带文件)
rm -rf robin    # -r 递归,-f 强制删除

# 创建空文件
touch test.txt
# 当然也可以直接使用 vim 进行创建并操作文件内容
vim test.java        # 具体参考vim指令

# 拷贝命令
cp [参数] 文件现目录 文件拷贝要到的目录
cp test.txt /home
# 拷贝全部
cp -r test /home
# 覆盖拷贝
cp -r test /home

# 移动文件(文件夹)或重命名
mv oldName.txt newName.txt
# 修改文件名
mv oldPath newPath

# 查看文件内容
cat [选项] fileName.txt
# 行号查询
cat -n fileName.txt
# 管道命令:将前语句的查询结果,扔给下一个语句 | more·
cat fileName.txt | more
# 按住enter键查询下一行,或者直接空格翻页

# more 基于Vi文本编辑器的文本过滤器
more fileName.txt

# less 分屏查看文件内容,与more相似,但是更强大,是一种动态加载文件内容信息的命令
less fileName.txt
# 空格下一页,pgDn下一页,pgUp上一页,/[?]字符串(n下找,N上找),q离开
/haha
# 等价于
?haha

# 输出内容到控制台
echo [选项] [输出内容]
echo $PATH
echo $HOSTNAME
echo "Hello World!"

# 查看文件开头部分
head [选项] [] fileName.txt
head fileName.txt
# 默认查看前十行
head -n 5 fileName.txt
# 查看前五行

# 查看文件末尾部分
tail [选项] [] fileName.txt
tail fileName.txt
# 默认查看后五行
tail -n 5 fileName.txt
# 查看后五行

# 实时追踪文件更新
tail -f fileName.txt
# 此时在另一个用户终端,输入
echo "Hello World!" > fileName.txt
# 就会发现文件内容进行了更新(一个箭头是覆盖,两个是追加)
# > 就是重定向,将上一条命令执行的结果返回给下一句
cat 文件1 > 文件2
ls -al > 文件

# Linux 的快捷方式
ln -s 指定的文件 被指定的文件
# 将 被指定的文件 创建快捷键到 指定的文件

# 查看历史执行命令
history
# 查看进10个命令
history 10
# 执行曾经的第22个命令
!22

压缩文件

# 压缩文件/解压
gzip 文件名
# 只能将文件压缩为.gz文件

gunzip 文件名.gz
# 解压缩.gz文件

=================================================================

# 压缩文件夹(文件)/解压缩文件夹(文件)
zip [选项] 文件名.zip
unzip [选项] 文件名.zip

-r 递归压缩
-d 指定解压后文件的存放地

# 举例
zip -r hello.zip /home/hello/    # 包含hello文件夹,它等价于
zip -r hello.zip /home/hello/*

unzip -d /opt /home/hello/hello.zip    # 将文件解压到 /opt

=================================================================

# 压缩和解压一体指令(.tar.gz)
tar [选项] 文件名.tar.gz 解压的路径
[选项]
-c:创建一个新的归档文件(打包)。例如:tar -cvf archive.tar /path/to/directory。
-x:解压归档文件(解包)。例如:tar -xvf archive.tar。
-t:列出归档文件中的内容。例如:tar -tvf archive.tar。
-f:指定归档文件的名称。通常与-c或-x参数一起使用。例如:tar -cvf archive.tar file1 file2。
-v:显示详细信息,即在打包或解压过程中显示所处理的文件名。例如:tar -cvf archive.tar file1 file2。

-z:使用gzip进行压缩或解压缩,通常用于处理.tar.gz格式的归档文件。
例如:tar -czvf archive.tar.gz /path/to/directory(压缩),tar -xzvf archive.tar.gz(解压缩)。

-j:使用bzip2进行压缩或解压缩,通常用于处理.tar.bz2格式的归档文件。
例如:tar -cjvf archive.tar.bz2 /path/to/directory(压缩),tar -xjvf archive.tar.bz2(解压缩)。

-J:使用xz进行压缩或解压缩,生成.tar.xz文件。
例如:tar -cJvf archive.tar.xz /path/to/directory(压缩),tar -xJvf archive.tar.xz(解压缩)

权限管理

# 第 1 位通常是:d(目录)、l(链接快捷方式)、-(普通文件)、c(字符设备外设)、b(块设备,硬盘)
# 第 2~4 位代表文件所有者对该文件的权限(r读、w写、x执行、-无权限)
# 第 5~7 位代表文件所属组对该文件的权限(rw-就是不可执行)
# 第 8~10 代表其他组对该文件的权限
# 修改Linux文件/文件夹权限
chmod
# 第一种,使用 + - = 对权限进行管理
# 其中 u 代表用户,g 代表所在组,o 代表其他组,a 代表所有人

chmod u=rwx,g=rw,o=x 文件名/目录
chmod o+w 文件名/目录    # 单独给 其他组 + 写的权限
chmod a-x 文件名/目录    # 单独给 所有用户 - 执行权限

# 第二种,使用数字进行变更权限
# r=4,w=2,x=1,所以r+w+x=7
# 1执行,2写,3执行+写,4读,5读+执行,6读+写,7读+写+可执行
chmod 751 文件/目录

# 修改文件文件所有者
chown 新用户 文件/目录    # 变更所有者
chown 新用户:新组 文件/目录 # 更改 所有者 和 所有组
[选项]
-R    # 全体子文件信息(一定是大R)

chgrp 新组 文件/目录

磁盘管理常用命令

ls -l /目录 | grep "^-"
# 列出普通文件
# "^-" 就是ls出来的第一占位符符号

ls -l /目录 | grep "^-" | wc -l
# 统计数量,wc计算,-l是指行数

ls -l /目录 | grep "^d" | wc -l
# 文件夹数量

ls -l /目录 | grep "^d"
# 列出文件夹

ls -lR /目录 | more
# 列举子文件和子文件夹递归显示

ls -lR /目录 | grep "^-" | wc -l
# 递归子文件,并计数

ls -lR /目录 | grep "^d" | wc -l
# 递归子文件夹,并计数

yum install tree
tree /目录
# 树状展示目录结构

进程管理

top#查看进程和占用

ps#哪些进程在运行
-a 所有进程信息
-u 以用户的格式显示进程
-x 显示后台进程运行参数

ps -ef

UID#user id
PID#进程ID
PPID#父进程ID
C#CPU占用
CMD#command 如何启动的
TIME#占用时间
STIME#启动时间

kill [PID]#关闭进程
killall [进程名]#关闭全部进程