Linux - 印象云

好久不见,终于回归!

Linux

1、linux目录结构说明

/bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/sbin:(usr/sbin/、usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

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

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

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

/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。例如mysql.conf

/usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

  1. /usr/bin:系统用户使用的应用程序。
  2. /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  3. /usr/src:内核源代码默认的放置目录。

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

/dev : dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,例如硬盘、cpu等等,在Linux中访问设备的方式和访问文件的方式是相同的。

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

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

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

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

/proc、/srv、/sys这三个目录均与linux的内核相关,一般是linux高手动的,普通人老实点。

/proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

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

/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp: 这个目录是用来存放一些临时文件的。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。例如: 系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

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

2、末行模式命令

命令英文功能
wwrite保存
qquit退出,如果没有保存,不允许退出
q!quit强行退出,不保存退出
wqwrite & quit保存并退出
x保存并退出

3、用户相关操作

序号命令作用说明
01useradd -m -g 组 新建用户名添加新用户-m 自动建立用户家目录,-g 指定用户所在的组,否则会建立一个和同名的组
02passwd 用户名设置用户密码如果是普通用户,直接用 passwd 可以修改自己的账户密码
03userdel -r 用户名删除用户-r 选项会自动删除用户家目录
04 cat /etc/passwd \ grep 用户名 确认用户信息 , 新建用户后,用户信息会保存在 /etc/passwd 文件中

提示:

  • 创建用户时,如果忘记添加-m选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
  • 创建用户时,默认会创建一个和用户名同名的组名
  • 用户信息保存在  /etc/passwd  文件中

如何找回root密码,如果我们不小心,忘记root密码,怎么找回。
思路:进入到单用户模式( 单用户模式,只有一个用户可以访问某个资源的状态 ),然后修改root密码。因为进入单用户模式,root 不需要密码就可以登录。

总结: 开机->在引导时输入回车键->看到一个界面输入e->看到一个新的界面,选中第二行(编辑内核)在输入e->在这行最后输入1 ,再输入回车键->再次输入b,这时就会进入到单用户模式。 这时,我们就进入到单用户模式,使用passwd指令来修改root密码。

help 命令 (功能描述:获得shell内置命令的帮助信息),例如:help cd

查看用户信息

序号命令作用
01id [用户名]查看用户 UID 和 GID 信息
02who查看当前所有登录的用户列表
03whoami查看当前登录用户的账户名

passwd 文件

/etc/passwd  文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是

  1. 用户名
  2. 密码(x,表示加密的密码)
  3. UID(用户标识)
  4. GID(组标识)
  5. 用户全名或本地帐号
  6. 家目录
  7. 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认是 dash

which(重要)

提示

  • /etc/passwd 是用于保存用户信息的文件
  • /usr/bin/passwd 是用于修改用户密码的程序
  • which 命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/ls

which useradd
# 输出
# /usr/sbin/useradd

bin  和 sbin

  • 在 Linux 中,绝大多数可执行文件都是保存在 /bin/sbin/usr/bin/usr/sbin
  • /binbinary)是二进制执行文件目录,主要用于具体应用
  • /sbinsystem binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/binuser commands for applications)后期安装的一些软件
  • /usr/sbinsuper user commands for applications)超级用户的一些管理程序

提示:

  • cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置

切换用户

序号命令作用说明
01su - 用户名切换用户,并且切换目录- 可以切换到用户家目录,否则保持位置不变
02exit退出当前登录账户
  • su 不接用户名,可以切换到 root,但是不推荐使用,因为不安全

3、软链接

序号命令作用
01ln -s 被链接的源文件 链接文件建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式
  1. 没有 -s 选项建立的是一个 硬链接文件
    两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
  2. 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用。

文件软硬链接的示意图:

在 Linux 中,文件名 和 文件的数据 是分开存储的

  • 提示:
    • 在 Linux 中,只有文件的 硬链接数 == 0 才会被删除
    • 使用 ls -l 可以查看一个文件的硬链接的数量
    • 在日常工作中,几乎不会建立文件的硬链接,知道即可

4、打包压缩

打包 / 解包

  • tar 是 Linux 中最常用的 备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件
  • tar 的命令格式如下:

打包文件:tar -cvf 打包文件.tar 被打包的文件/路径…

解包文件:tar -xvf 打包文件.tar

tar 选项说明:

选项含义
c生成档案文件,创建打包文件
x解开档案文件
v列出归档解档的详细过程,显示进度
f指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后

注意:f 选项必须放在最后,其他选项顺序可以随意

 压缩/解压缩

1) gzip

  1. gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
  2. gunzip 文件.gz (功能描述: 解压缩文件命令)
  • tar 与 gzip 命令结合可以使用实现文件 打包和压缩
    • tar 只负责打包文件,但不压缩
    • 用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz

在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz

  • 在 tar 命令中有一个选项 -z 可以调用 gzip,从而可以方便的实现压缩和解压缩的功能
  • 命令格式如下:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

# 解压缩文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
选项含义
-C解压缩到指定目录,注意:要解压缩的目录必须存在

2) bzip2(two)

  • tar 与 bzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 一样)
    • tar 只负责打包文件,但不压缩,
    • 用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2
  • 在 tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能
  • 命令格式如下:
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...

# 解压缩文件
tar -jxvf 打包文件.tar.bz2

3)zip/unzip指令

  1. zip用于压缩文件
    -r 递归压缩,即压缩目录
  2. unzip用于解压的,这个在项目打包发布中很有用的
    -d<目录> 指定解压后文件的存放目录

5、远程登录和复制文件

序号命令对应英文作用
01ssh 用户名@ipsecure shell关机/重新启动
02scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径secure copy远程复制文件

SSH 客户端的简单使用

ssh [-p port] user@remote
  • user 是在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote 是远程机器的地址,可以是 IP域名,或者是 后面会提到的别名
  • port 是 SSH Server 监听的端口,如果不指定,就为默认值 22

scp(掌握)

  • scp 就是 secure copy,是一个在 Linux 下用来进行 远程拷贝文件 的命令
  • 它的地址格式与 ssh 基本相同需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
# 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py

# 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py

# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop

# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
选项含义
-r若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口

6、搜索查找

6.1 find指令

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

使用实例:

  1. find . -name "*.log" -ls 在当前目录查找以.log 结尾的文件, 并显示详细信息。
  2. find /root/ -perm 777 查找/root/目录下权限为 777 的文件,-perm 根据文件权限寻找文件
  3. find . -size +100M 查找当前目录大于 100M 的文件,-size 根据文件大小寻找文件[±Sizek] ,(+n大于,-n小于, n等于)

6.2 grep过滤查找

grep命令 命令是一种强大的文本搜索工具,主要是匹配文本中的内容,或者说,匹配搜索结果中的文本内容

格式: grep [option] pattern [file] 可使用 —help 查看更多参数。

-n 显示匹配行及行号。
-i 忽略字母大小写

使用实例:

  1. ps -ef | grep sshd 查找指定 ssh 服务进程
  2. ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身
  3. grep -n 'hello' a.txt  从文件中查找关键词,并显示行号

ps -ef用于查看全格式的全部进程,其中“ps”是在Linux中是查看进程的命令,“-e ”参数代表显示所有进程,“-f”参数代表全格式。

例子:hello.txt文件中,查找"yes" 所在行,并且显示行号:

cat hello.txt | grep -ni yes

6.3 Locate命令,类似find,但是搜索的速度是非常的块

locaate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的 locate数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

  • 基本语法: locate 搜索文件
  • 特别说明: 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

使用locate 指令快速定位hello.txt 文件所在目录

>>updatedb
>>locate hello.txt

7、系统信息相关命令

7.1 磁盘信息

序号命令作用
01df -hdisk free 显示磁盘剩余空间
02du -h [目录名]disk usage 显示目录下的文件大小
  • 选项说明
参数含义
-h以人性化的方式显示文件大小

7.2 进程信息

所谓 进程,通俗地说就是 当前正在执行的一个程序

序号命令作用
01ps auxprocess status 查看进程的详细状况
02top动态显示运行中的进程并且排序
03kill [-9] 进程代号终止指定代号的进程,-9 表示强行终止

ps :默认只会显示当前用户通过终端启动的应用程序

ps 选项说明:

选项含义
a显示终端上的所有进程,包括其他用户的进程
u显示进程的详细状态
x显示没有控制终端的进程

提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃

  • 要退出 top 可以直接输入 q

查看进程树pstree:

  1. -P :显示进程的PID
  2. -u :显示进程的所属用户

8、查看系统网络情况netstat(重要)

基本语法:
netstat [选项]
netstat -anp 选项说明:

  1. -an: 按一定顺序排列输出
  2. -P: 显示哪个进程在调用
分享