linux系统基础
1 系统信息
1.1 基础信息
1 | date #显示当前日期和时间 |
1.2 系统信息
1 | cat /proc/cpuinfo #查看cpu信息 |
1.3 目录操作
1 | pwd #查看当前所在目录 |
1.4 文件操作
1 | cat 文件名 #查看文件内容 |
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 | netstat -nupl(UDP类型的端口) |
a: 表示所有n: 表示不查询dnst: 表示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 | 文件属性 连接数 属主 属组 文件大小 修改日期 文件名 |
7.1 文件属性
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
从左至右用 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
2chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
1 | [root@www ~] cd ~ |
将install.log的拥有者与群组改回为root:
1 | [root@www ~]# chown root:root 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 | [root@www ~]# ls -al .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中,useradd与adduser是没有任何区别的,都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码
在ubuntu中,useradd与adduser有所不同
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,每行代表一个用户账户,由七个字段组成,用冒号分隔:
- 用户名:用户的登录名。
- 密码占位符:通常为“x”,实际密码存储在_/etc/shadow_文件中。
- 用户ID (UID):用户的唯一标识。
- 组ID (GID):用户所属的主组ID。
- 用户描述:用户的全名或描述信息。
- 主目录:用户的主目录路径。
- 登录shell:用户登录后使用的shell。
用户名密码配置文件/etc/shadow,/etc/shadow文件的每一行代表一个用户账户,使用冒号:分隔成多个字段。每个字段的含义如下:
- 用户名:与
/etc/passwd文件中的用户名相对应。 - 加密密码:用户密码的加密形式。密码加密方式可能包括SHA-512、MD5、Blowfish或SHA-256等。
- 最后一次修改时间:从1970年1月1日起至用户最后一次修改密码时的天数。
- 最小时间间隔:用户两次修改密码之间所需的最小天数。
- 最大时间间隔:密码保持有效的最大天数。
- 警告时间:系统开始警告用户到用户密码正式失效之间的天数。
- 不活动时间:用户没有登录活动但账号仍能k式失效之间的天数。
- 不活动时间:用户没有登录活动但账号仍能保持有效的最大天数。
- 失效时间:账号的生存期,过了这个时间账号就不再是一个合法的账号,不能用来登录。
- 标志:保留字段,目前为空,以备将来使用。
8.3.2 组管理文件
用户组密码管理文件/etc/gshadow
- 用户组名:与_/etc/group_文件中的组名相对应。
- 用户组密码:如果字段为空或包含
!,则表示该用户组没有密码。 - 用户组管理员:这个字段可以为空,如果有多个管理员,它们之间用逗号(,)分隔。
- 组成员:列出了用户组中的成员账号,如果有多个成员,也是用逗号(,)分隔。






