1 系统信息

1.1 基础信息

1
2
3
4
5
6
date #显示当前日期和时间
cal #显示当月的日历
uptime #显示系统从开机到现在所运行的时间
w #显示登录的用户
whoami #查看你的当前用户名
uname -a #显示内核信息

1.2 系统信息

1
2
3
4
5
cat /proc/cpuinfo #查看cpu信息
cat /proc/meminfo #查看内存信息
df #显示磁盘信息
du #显示目录空间占用情况
free #显示内存及交换区占用情况

1.3 目录操作

1
2
3
4
5
6
7
8
pwd #查看当前所在目录
ls #查看当前目录下哪些文件和文件夹
ls -a #查看详细的信息
cd .. #返回当前目录的上一级目录
cd - #回到上一次所在目录
mkdir #创建一个目录
rmdir #删除空目录名

1.4 文件操作

1
2
3
4
5
6
7
cat 文件名 #查看文件内容
more 文件名 #分页查看文件内容
less 文件名 #可控分页查看文件内容
touch file1 file2 #创建两个文件
mv 路径/文件 /路劲/文件 #移动相对路径下的文件到绝对路径下
mv 文件名 新名称 #改名
cp 路径/文件 /路劲/文件 #复制相对路径下的文件到绝对路径下

2 find命令

Linux find 命令用于在指定目录下查找文件和目录。

它可以使用不同的选项来过滤和限制查找的结果。

使用方法:find [指定查找目录] [查找规则] [查找完后的操作]
模糊查询:*.txt
iname 与 name 的区别:iname不区分大小写,name区分大小写
匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 *?
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [+-]size[cwbkMG]:按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 +- 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。

动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。

find 命令中用于时间的参数如下:

  • -amin n:查找在 n 分钟内被访问过的文件。
  • -atime n:查找在 n*24 小时内被访问过的文件。
  • -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
  • -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
  • -mmin n:查找在 n 分钟内被修改过的文件。
  • -mtime n:查找在 n*24 小时内被修改过的文件。

在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。

正数应该表示时间之前,负数表示时间之内。

关于时间 n 参数的说明:

  • +n:查找比 n 天前更早的文件或目录。
  • -n:查找在 n 天内更改过属性的文件或目录。
  • n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

3 文件的压缩与解压

3.1 zip格式

zip格式其实和windows的zip格式时一样的,也就是说可以和windows相互解压缩使用

命令 说明
zip 压缩文件名 源文件 压缩文件
zip -r 压缩文件名 源目录 压缩目录
unzip 压缩文件 解压缩文件

3.2 gzip格式

.gz格式本身不提供保留源文件功能功能,保留源文件是利用 -c 参数 + >,-c会将压缩结果输出到控制台,而 > 可以输出结果写入文件

命令 说明
gzip 源文件 压缩为.gz文件,源文件会消失
gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留
gzip -r 目录 压缩目录下的所有子文件,但是不压缩目录
gzip -d 压缩文件 解压缩文件
gunzip 压缩文件 解压缩文件
gunzip -r 目录 解压缩目录(子文件)

3.3 bz2格式

注意:.bzip2命令不能压缩目录

目录 说明
bzip2 压缩为.bz2格式,不保留文件
bzip2 -k 源文件 压缩之后保留源文件
bzip2 -d 压缩文件 解压缩文件
bunzip2 [-k] 压缩文件 解压缩,-k保留源文件

3.4 tar格式

命令 说明
tar -cvf 打包文件名 源文件 打包
tar -xvf 打包文件名 解包

选项说明:-c 打包 -v 显示过程 -x 解打包 -f 指定打包后的文件名

3.5 tar.gz格式

其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式,重点掌握压缩!

压缩多个文件只需要将多个文件空格隔开即可,将文件压缩到指定目录可以使用路径+压缩文件名

选项说明:
-z: 压缩为.tar.gz格式
-x: 解压缩.tar.gz格式
-t: 只查看压缩文件,不解压

命令 说明
tar -zcvf 压缩包名.tar.gz 源文件 压缩
tar -zxvf 压缩包名.tar.gz [-C 解压位置] 解压缩
tar -ztvf 压缩包名 .tar.gz 只查看不解压

3.6 tar.bz2格式

是先打包成.tar格式,再压缩为.bz2格式

命令 说明
tar -jcvf 压缩包名.tar.gz2 源文件 压缩
tar -jxvf 压缩包名.tar.gz2 源文件 解压缩

4 端口查看

1
2
netstat -nupl(UDP类型的端口)
netstat -ntpl(tcp类型的端口)
  • a: 表示所有
  • n: 表示不查询dns
  • t: 表示tcp协议
  • u: 表示udp协议
  • p: 表示查询占用的程序
  • l: 表示查询正在监听的程序

5 查询进程

1
ps
  • a: 显示现行终端机下的所有进程,包括其他用户的进程
  • U: 以用户为主的格式来显示进程状况
  • x: 显示没有控制终端的进程
  • A: 显示所有进程
  • e: 与”A”参数相同
  • f: 做出一个更为完整的输出

6 终止进程

kill 命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15),即终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。

6.1.1 语法

1
kill [options] <PID> \\

参数说明

  • -l:列出所有可用的信号。
  • -<signal>:发送特定的信号给目标进程,如 -9 表示发送 KILL 信号,即强制终止进程。

6.1.2 基本用法

终止进程:默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。

1
kill PID

其中 PID 是进程的 ID。

发送指定信号:通过 -s 选项可以发送指定的信号。

1
kill -s SIGNAL PID

例如,发送 SIGKILL(信号9)将立即结束进程,不能被忽略或捕获。

1
kill -9 PID

杀死进程组:使用 -9 选项可以杀死整个进程组。

1
kill -9 -PID

使用 kill -l 命令列出所有可用信号。

最常用的信号是:

  • SIGKILL(信号9):立即结束进程,不能被捕获或忽略。
  • SIGTERM(信号15):正常结束进程,可以被捕获或忽略。
  • SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。
  • SIGCONT(信号18):继续执行被暂停的进程。
  • SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。

6.1.3 实例

终止 PID 为 1234 的进程:

1
kill 1234

强制终止 PID 为 1234 的进程:

1
kill -9 1234

向 PID 为 1234 的进程发送 SIGSTOP:

1
kill -s SIGSTOP 1234

7 文件基本属性

  • Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对用户访问同一文件内的权限做了不同的规定
  • 在Linux中我们可以使用ll或者ls-l命令来显示一个文件的属性以及文件所属的用户和组
1
2
文件属性   连接数 属主  属组 文件大小   修改日期     文件名
-rwxr-xr-x 1 root root 4096 Jan 11 21:19 example.txt

7.1 文件属性

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

图片.png

从左至右用 0-9 这些数字来表示。

0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;

2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

7.2 更改文件属性

7.2.1 chgrp:更改文件属组

语法:

1
chgrp [-R] 属组名 文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。

7.2.2 chown:更改文件所有者(owner),也可以同时更改文件所属组。

语法:

1
2
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

1
2
3
4
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

1
2
3
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log

7.2.3 chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx—- 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= —- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:

1
chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

举例来说,如果要将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:

1
2
3
4
5
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc

那如果要将权限变成 _-rwxr-xr—_ 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

7.2.3.1 符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

那么我们就可以使用 u, g, o 来代表三种身份的权限。

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmod u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录

如果我们需要将文件权限设置为 -rwxr-xr— ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

1
2
3
4
5
6
#  ``touch test1    // 创建 test1 文件
# ls -al test1 // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

1
2
3
#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

8 用户管理

Linux系统用户是根据用户ID来识别的,默认ID长度为32位,从默认ID编号为0开始,但是为了和老式系统兼容,用户ID限制在60000以下,Linux用户总共分为三种,分别如下:
root用户(ID 0)
系统用户(ID 1~499)
普通用户(ID 500以上)

8.1 创建用户

在centos中,useraddadduser是没有任何区别的,都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码

ubuntu中,useraddadduser有所不同

  • useradd在使用该命令时不会自动创建与用户名同名的用户目录,而且不能自动创建shell版本,没设置密码,不能登录,需要使用passwd命令修改密码
  • adduser在使用该命令创建用户会在/home下创建与用户同名的用户目录、系统shell,会在创建时提示输入密码,更加友好
  • userdel删除用户,不会删除相关的目录文件,userdel -r可以删除用户及相关目录

8.2 组管理

8.2.1 管理命令

8.2.1.1 添加组

1
groupadd 选项 用户组

可以使用的选项有:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

8.2.1.2 删除组

1
groupdel 用户组

8.2.1.3 修改用户组的属性

使用groupmod命令。其语法如下:

1
groupmod 选项 用户组

常用的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字

8.2.1.4 查看所有组

1
groups #查看所有组信息

8.2.1.5 组的切换

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

1
newgrp root

比如同时在root组和user组时,如果写入文件,系统会分配主组作为文件权限,其他user组成员就无法访问,必须切换才行

8.2.2 用户与组的对应关系

一对一:即一个用户可以存在一个组中,也可以是组的唯一成员
一对多:即一个用户可以存在多个组中,这个用户就具有这些组的功能
多对一:即多个用户可以存在一个组中,这些用户拥有组的共同权限
多对多:即多用户可以存在多个组中,并且几个用户可以归属相同的组。其实是前面三条的扩展

8.3 帐号文件

8.3.1 用户管理文件

用户名配置文件/etc/passwd,每行代表一个用户账户,由七个字段组成,用冒号分隔:

  1. 用户名:用户的登录名。
  2. 密码占位符:通常为“x”,实际密码存储在_/etc/shadow_文件中。
  3. 用户ID (UID):用户的唯一标识。
  4. 组ID (GID):用户所属的主组ID。
  5. 用户描述:用户的全名或描述信息。
  6. 主目录:用户的主目录路径。
  7. 登录shell:用户登录后使用的shell。

用户名密码配置文件/etc/shadow/etc/shadow文件的每一行代表一个用户账户,使用冒号:分隔成多个字段。每个字段的含义如下:

  1. 用户名:与/etc/passwd文件中的用户名相对应。
  2. 加密密码:用户密码的加密形式。密码加密方式可能包括SHA-512、MD5、Blowfish或SHA-256等。
  3. 最后一次修改时间:从1970年1月1日起至用户最后一次修改密码时的天数。
  4. 最小时间间隔:用户两次修改密码之间所需的最小天数。
  5. 最大时间间隔:密码保持有效的最大天数。
  6. 警告时间:系统开始警告用户到用户密码正式失效之间的天数。
  7. 不活动时间:用户没有登录活动但账号仍能k式失效之间的天数。
  8. 不活动时间:用户没有登录活动但账号仍能保持有效的最大天数。
  9. 失效时间:账号的生存期,过了这个时间账号就不再是一个合法的账号,不能用来登录。
  10. 标志:保留字段,目前为空,以备将来使用。

8.3.2 组管理文件

用户组密码管理文件/etc/gshadow

  1. 用户组名:与_/etc/group_文件中的组名相对应。
  2. 用户组密码:如果字段为空或包含!,则表示该用户组没有密码。
  3. 用户组管理员:这个字段可以为空,如果有多个管理员,它们之间用逗号(,)分隔。
  4. 组成员:列出了用户组中的成员账号,如果有多个成员,也是用逗号(,)分隔。