云计算

一、Linux简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Linux是一种操作系统!!
操作系统:一堆软件的集合,让计算机硬件正常的工作
C/S结构:客户端(简单、方便)与服务端(稳定、高效、安全)

Unix/Linux发展史
UNIX诞生,1970-1-1
Ken Thompson、Dennis Ritchie
根据MULTICS项目的经验开发了一个多任务
操作系统 —— UNICS,后改为UNIX
1973年,用C语言重写了UNIX
1978年,有大约600台计算机运行UNIX

Linux之父,Linus Torwalds
1991年10月,发布0.02版(第一个公开版)内核
1994年03月,发布1.0版内核
标准读音:“哩呐科斯”
内核:调配计算机硬件资源
用户---->内核---->硬件
内核版本号:主版本.次版本.修订号


Linux版本及应用
发行版的名称/版本由发行方决定
Red Hat Enterprise Linux 5/6/7/8
Suse Linux Enterprise 12
Debian Linux 7.8
Ubuntu Linux 14.10/15.04
……

基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#查看系统版本
[root@client ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
# less查看文本文件内容,适合查看内容较多文件
[root@client ~]# less /etc/passwd
查询关键字 /bin #全文查找bin关键字
按n进行匹配项跳转,按N进行匹配项跳转
按q键进行退出
# hostname查看主机名
[root@client ~]# hostname
client
# 设置永久主机名
[root@client ~]# hostnamectl set-hostname 主机名
# 列出CPU处理器信息
[root@client ~]# lscpu
# 列出内存信息
[root@client ~]# cat /proc/meminfo
# 查看网卡的IP地址
ifconfig
# 临时设置IP
ifconfig eth0 192.168.1.1
# mkdir创建目录
# touch创建文本文件
# headtail 命令查看文本文件部分信息
– 格式:head -n 数字 文件名
tail -n 数字 文件名
# grep命令过滤文本文件内容
作用:输出包含指定字符串的行
# vim修改文本文件内容(文本编辑器)
三个模式:命令模式、插入模式、末行模式
vim当文件不存在时,会自动创建此文件
vim不能创建目录
命令模式--- i键 或者 o键--》插入模式(Esc回到命令模式)
命令模式--- 英文的冒号:---》末行模式(Esc回到命令模式)
末行模式 :wq #保存并退出
末行模式 :q! #强制不保存并退出
# 批量删除 行首的# 号
操作步骤
Ctrl + v
按键盘 的上键 或 下键 选择
按 d 删除
# 批量添加 # 号
操作步骤
Ctrl + v
按键盘的上键 或 下键 选择
按 Shift + i
输入井号 #
按ESC 键 ,就添加完成
# 关机poweroff与重启reboot

# 别名的定义:简化复杂的命令
• 查看已设置的别名
– alias [别名名称]
• 定义新的别名
– alias 别名名称= '实际执行的命令行'
• 取消已设置的别名
– unalias [别名名称]

# rm 删除
• rm — Remove
– 格式:rm [选项]... 文件或目录…
• 常用命令选项
– -r、-f:递归删除(含目录)、强制删除
# mv — Move移动:源数据会消失
– 格式:mv 原文件… 目标路径
重命名:路径不变的移动
# cp — Copy:源数据不会消失
– 格式:cp [选项]... 原文件… 目标路径
• 常用命令选项
– -r:递归,复制目录时必须有此选项
# 在文本文件中过滤,包含指定字符串的行
– grep [选项] '字符串' 文本文件...

• 常用命令选项
– -v,取反匹配
– -i,忽略大小写

归档及压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
一、归档及压缩
作用:1.减小占用空间大小 2.整合分散的数据
• 归档的含义
将许多零散的文件整理为一个文件
文件总的大小基本不变
• 压缩的含义
按某种算法减小文件所占用空间的大小
恢复时按对应的逆向算法解压

• 常见的压缩格式及命令工具:
.gz  gzip
.bz2  bzip2
.xz  xz
• tar 集成备份工具
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称,必须在所有选项的最后
– -z、-j、-J:调用 .gz、.bz2、.xz 格式工具进行处理
– -t:显示归档中的文件清单
– -C:指定释放路径
# tar 制作压缩包(tar打包)
格式:tar 选项 /路径/压缩包名字 /源数据…….
# 重定向(重新定向命令的输出)
将前面命令的输出,作为内容,写入到后面的文件
>:覆盖重定向
>>:追加重定向
# 管道(操作符号 | )
作用:将前面命令的输出,传递给后面命令,作为后面命令的参数
# grep高级使用
作用:从文本文件内容中,过滤关键字符串
# grep root /etc/passwd
# grep -v root /etc/passwd #取反匹配
# grep ^root /etc/passwd #以root开头
# grep bash$ /etc/passwd #以bash结尾
^$:表示空行
# cat /etc/default/useradd
# grep -v ^$ /etc/default/useradd
Linux中大多数配置文件内容,以#开头的行为注释行
显示配置文件有效信息(去除以#开头的注释行和去除空行)
# grep ^# /etc/default/useradd #以#号开头的行
# grep -v ^# /etc/default/useradd #去除#号开头的行
# grep -v ^# /etc/default/useradd | grep -v ^$

# find精确查找
格式:find [目录] [条件1]
– 常用条件表示:
-type 类型(f、d、l)
-name "文档名称"
-size +|-文件大小(k、M、G)
-user 用户名
-mtime 修改时间
-type 类型(f文本文件、d目录、l快捷方式)
# find /boot -type d
# find /opt -type d
# find /etc -type l
# find /boot -type f
# find /boot -type d | wc -l
# find /opt -type d | wc -l
# find /etc -type l | wc -l
-name "文档名称"
# find /etc/ -name "passwd"
# find /etc/ -name "*tab"
# find /etc/ -name "*.conf"
# find /etc/ -name "*tab" | wc -l
# find /etc/ -name "*.conf" | wc -l
# find /etc/ -name "*.conf" | cat -n
-size +或- 文件大小(k、M、G)
# find /boot/ -size +300k
# find /boot/ -size +10M
# find /boot/ -size +1M
# find /boot/ -size -2M
-user 用户名 (按照数据的所有者)
# useradd natasha #创建用户
# find /home/ -user natasha
# find / -user natasha
/proc:内存的数据,不占用硬盘空间
-mtime 修改时间 (所有的时间都是过去时间)
-mtime +90 #90天之前的数据
-mtime -90 #最近90天之内的数据
# find /root -mtime +90
# find /root -mtime +1000
# find /root -mtime -2
# find高级使用
处理find找到的数据,每查找的一个就传递一次
– find [范围] [条件] -exec 处理命令 {} \;
-exec额外操作的开始
{} 永远表示前面find查找的结果
\; 额外操作的结束
# find /boot/ -size +10M
# find /boot/ -size +10M -exec ls -lh {} \;
# find /boot/ -size +10M
# find /boot/ -size +10M -exec cp {} /mnt \;
# ls /mnt/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#	RPM软件包简介
• RPM Package Manager
由红帽公司提出,RedHat、SUSE等系列采用
建立集中数据库,记录软件包安装/卸载等变化信息,分析软件包依赖关系
• RPM包文件名特征
– 软件名-版本信息.操作系统.硬件架构.rpm
firefox-52.7.0-1.el7.centos.x86_64.rpm

软件名:firefox
软件包名:firefox-52.7.0-1.el7.centos.x86_64.rpm

• RPM包的一般安装位置(分散)
文件类别 默认安装位置
普通执行程序 /usr/bin/ 、/bin/
服务器程序、管理工具 /usr/sbin/ 、/sbin/
配置文件 /etc/、/etc/软件名/
日志文件 /var/log/、/var/log/软件名/
程序文档、man帮助手册页 /usr/share/doc/ 、/usr/share/man/

# 查询软件信息
查询软件(参数为软件名)
# rpm -qa #当前系统中所有已安装的软件包
# rpm -qa | grep firefox
# rpm -q firefox #查看firefox是否安装
firefox-52.7.0-1.el7.centos.x86_64
# rpm -q httpd #httpd提供web服务的软件
未安装软件包 httpd
# rpm -q bash
bash-4.2.46-30.el7.x86_64
# rpm -qi firefox #查询软件信息(查询已安装)
# rpm -ql firefox #查询软件安装了哪些内容(安装清单)
# rpm -ql firefox | less
• 查询某个目录或文件是哪个RPM包带来的
– 格式:rpm -qf [文件路径]…
– 即使目标文件被删除,也可以查询
which vim #查询命令对应的程序文件
查询软件包(参数为软件包名)
# rpm -q vsftpd #查询vsftpd软件是否安装
未安装软件包 vsftpd
# ls /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
查询软件包的安装清单:
# rpm -qpl /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
查询软件包信息
入红帽签名信息(了解)
# rpm --import /mnt/RPM-GPG-KEY-CentOS-7
查询软件包信息
# rpm -qpi /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
# rpm -qpl /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
# 安装RPM软件
– 格式:rpm -i RPM包文件...
• 辅助选项
– -v:显示细节信息
– -h:以#号显示安装进度
– --force:强制安装、覆盖安装
– --test:测试安装,不做真实安装动作

# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd

# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm
# rpm -q vsftpd #查询当前的系统是否安装了该软件
vsftpd-3.0.2-22.el7.x86_64

# rpm -e vsftpd #卸载软件
# rpm -q vsftpd #查询当前的系统是否安装了该软件
未安装软件包 vsftpd

--force:强制安装、覆盖安装
# which hostname
/usr/bin/hostname
# rm -rf /usr/bin/hostname
# hostname
# 解决依赖关系
– 先安装/卸载要求的包
– 如果RPM包齐全但比较多,可以用通配符 *
• 忽略依赖关系(不推荐)
– 可能会导致软件运行异常
– 辅助选项 --nodeps
常见依赖关系的报错:
[root@localhost ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-61.el7.x86_64.rpm
错误:依赖检测失败:
bind = 32:9.9.4-61.el7 被 bind-chroot-32:9.9.4-61.el7.x86_64 需要
建Yum软件包仓库
作用:自动解决依赖关系安装软件
服务:自动解决依赖关系安装软件
服务端(本机): 1.众多的软件 2.仓库数据文件(repodata)
3.FTP协议 或 http 协议
本地Yum仓库:服务端需要有光盘内容即可
客户端(本机):指定服务端位置
– 仓库配置:/etc/yum.repos.d/*.repo
– 错误的文件会影响正确的文件
客户端文件配置内容:
– [源名称] :自定义名称,具有唯一性
– name:仓库的描述信息
– baseurl:指定YUM服务端的位置
– enabled:是否启用
– gpgcheck:是否验证红帽签名
– gpgkey:用于RPM软件包验证的密钥文件
完整示例:
# vim /etc/yum.repos.d/mydvd.repo
[nsd20]
name=hahaxixi
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
# ls /etc/yum.repos.d/
# mkdir /etc/yum.repos.d/bak
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
# ls /etc/yum.repos.d/
# ls /etc/yum.repos.d/bak
]# vim /etc/yum.repos.d/mydvd.repo
[centos7] #仓库的名称
name=centos7.5 #仓库描述信息
baseurl=file:///mnt #指定服务端位置file://表示本地为服务端
enabled=1 #本文件启用
gpgcheck=0 #不检测红帽签名信息

# yum repolist #列出仓库信息
常见错误:
1.没有挂载光驱设备 ls /mnt #查看挂载点是否有光盘内容
2.错误的文件会影响 ls /etc/yum.repos.d/
3.写错了
# 总结:本地Yum仓库构建方法(自己为自己提供服务)
1.服务端:显示光盘的内容,挂载光驱设备
2.客户端:书写客户端配置文件,指定服务端位置
3.执行流程: yum命令--->/etc/yum.repos.d/*.repo--->baseurl=file:///mnt


用户管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
#	用户管理简介
# 用户账户
作用: 1.可以登陆操作系统 2.不同的用户具备不同的权限
唯一标识:UID(编号从0开始的编号,默认最大60000)
zhangsan(UID 1200)
管理员root的UID:永远为0
普通用户的UID:默认从1000开始

# 组账户
作用: 方便管理用户
唯一标识:GID(编号从0开始的编号,默认最大60000)
sg(1500)
原则:Linux一个用户必须至少属于一个组
组账户的分类:
基本组:系统创建与用户同名
附加组(从属组):由管理员创建,由管理员进行加入

# useradd zhangsan
组: zhangsan
组:sg xs mn haha xixi


# 本地账户的数据文件
– /etc/passwd、/etc/shadow
– /etc/group、/etc/gshadow

# /etc/passwd:存放用户基本信息配置文件
[root@localhost ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器


# 用户账号创建
 命令useradd
– 格式:useradd [选项]... 用户名
• 常用命令选项
– -u:指定 UID 标记号
– -d:指定宿主目录(家目录),缺省为 /home/用户名
– -G:指定所属的附加组
– -s:指定用户的登录解释器


-u:指定 UID 编号
[root@localhost ~]# useradd nsd01
[root@localhost ~]# ls /home/ #查看家目录的产生
lisi nsd01 zhangsan
[root@localhost ~]# grep nsd01 /etc/passwd #查看nsd01信息
nsd01:x:1002:1002::/home/nsd01:/bin/bash
[root@localhost ~]# id nsd01 #查看nsd01用户基本信息
uid=1002(nsd01) gid=1002(nsd01) 组=1002(nsd01)
[root@localhost ~]# id gaga
id: gaga: no such user #无此用户

[root@localhost ~]# useradd -u 1500 nsd02 #指定UID创建用户
[root@localhost ~]# id nsd02 #查看nsd02用户基本信息
uid=1500(nsd02) gid=1500(nsd02) 组=1500(nsd02)
[root@localhost ~]# grep nsd /etc/passwd #查看用户信息
nsd01:x:1002:1002::/home/nsd01:/bin/bash
nsd02:x:1500:1500::/home/nsd02:/bin/bash
[root@localhost ~]# useradd nsd03
[root@localhost ~]# grep nsd /etc/passwd
[root@localhost ~]# id nsd03

-d:指定宿主目录(家目录),缺省为 /home/用户名
[root@localhost ~]# useradd -d /opt/nsd04 nsd04
[root@localhost ~]# grep nsd04 /etc/passwd
[root@localhost ~]# ls /opt/

[root@localhost ~]# useradd -d /opt/haha05 nsd05
[root@localhost ~]# grep nsd05 /etc/passwd
[root@localhost ~]# ls /opt/

-G:指定所属的附加组
[root@localhost ~]# groupadd stugrp #单独创建stugrp组
[root@localhost ~]# useradd -G stugrp nsd06
[root@localhost ~]# id nsd06
uid=1504(nsd06) gid=1505(nsd06) 组=1505(nsd06),1504(stugrp)

[root@localhost ~]# useradd -G stugrp nsd07
[root@localhost ~]# id nsd07

-s:指定用户的登录解释器
shell:壳,解释器
用户---->解释器---->内核---->硬件
/sbin/nologin:禁止用户登录操作系统

[root@localhost ~]# useradd -s /sbin/nologin nsd10
[root@localhost ~]# grep nsd07 /etc/passwd

[root@localhost ~]# useradd -s /sbin/nologin nsd11
[root@localhost ~]# grep nsd09 /etc/passwd

# usermod命令
– 格式:usermod [选项]... 用户名
• 常用命令选项
– -l:更改用户帐号的登录名称
– -u:用户id
– -d:家目录路径
– -s:登录解释器
– -G:附加组 //重置附加组

-l:更改用户帐号的登录名称
-u:用户id
-s:登录解释器
# useradd nsd13
# id nsd13
# grep nsd13 /etc/passwd

# usermod -l stu13 nsd13 #修改用户名字
# id stu13

# usermod -u 1600 stu13 #修改用户的UID
# id stu13

# usermod -s /sbin/nologin stu13 #修改用户的解释器程序
# grep stu13 /etc/passwd


-d:家目录路径(不会自动创建家目录)
[root@localhost ~]# useradd nsd15
[root@localhost ~]# grep nsd15 /etc/passwd
nsd15:x:1601:1601::/home/nsd15:/bin/bash
[root@localhost ~]# ls /home/

[root@localhost ~]# usermod -d /etc/abc nsd15
[root@localhost ~]# grep nsd15 /etc/passwd
nsd15:x:1601:1601::/etc/abc:/bin/bash
[root@localhost ~]# ls /etc/abc
ls: 无法访问/etc/abc: 没有那个文件或目录

-G:修改用户的附加组 #重置附加组
[root@localhost ~]# useradd nsd16
[root@localhost ~]# id nsd16
uid=1602(nsd16) gid=1602(nsd16) 组=1602(nsd16)
[root@localhost ~]# usermod -G stugrp nsd16
[root@localhost ~]# id nsd16
uid=1602(nsd16) gid=1602(nsd16) 组=1602(nsd16),1504(stugrp)

[root@localhost ~]# groupadd tmooc
[root@localhost ~]# usermod -G tmooc nsd16
[root@localhost ~]# id nsd16
uid=1602(nsd16) gid=1602(nsd16) 组=1602(nsd16),1603(tmooc)


# 设置密码
# passwd命令
– 格式:passwd [选项]... 用户名
[root@localhost ~]# passwd nsd01 #交互式设置
更改用户 nsd01 的密码 。
新的 密码: #输入新密码
无效的密码: 密码少于 8 个字符
重新输入新的 密码: #重新输入新密码
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# su - nsd01 #临时切换用户身份
[nsd01@localhost ~]$ passwd
更改用户 nsd01 的密码 。
为 nsd01 更改 STRESS 密码。
(当前)UNIX 密码: #输入旧密码
新的 密码: #输入新密码
重新输入新的 密码: #重新输入新密码
passwd:所有的身份验证令牌已经成功更新。
[nsd01@localhost ~]$ exit #退出。回到root用户身份

# passwd命令,支持非交互式设置密码
– --stdin:从标准输入(比如管道)取密码
[root@localhost ~]# echo 123 | passwd --stdin nsd01
[root@localhost ~]# echo 123456 | passwd --stdin nsd01
[root@localhost ~]# echo redhat | passwd --stdin nsd01

# /etc/shadow,保存密码字串/有效期等信息
– 每个用户记录一行,以:分割为9个字段
[root@localhost ~]# grep nsd01 /etc/shadow
nsd01:$6$NVe937Nd$B0n94XrpQ.LipQHTpYh0iV/M4jCLdccfHxzRLprdxDzwk8WDDh/TzdTfh8lA9y9WKJ.8Ls/l5.w/1W.nV6CFX/:18481:0:99999:7:::

上一次修改密码的时间:自1970-1-1到达上一次修改密码的时间,所经历的天数

字段1:用户帐号的名称
字段2:加密后的密码字符串
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认0
字段5:密码的最长有效天数,默认99999
字段6:密码过期前的警告天数,默认7
字段7:密码过期后多少天禁用此用户账号
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)

# 用户初始配置文件
# 配置文件来源
新建用户时,新建用户家目录,根据 /etc/skel 模板目录复制
[root@localhost ~]# ls -A /etc/skel/

[root@localhost ~]# touch /etc/skel/haxi.txt
[root@localhost ~]# mkdir /etc/skel/test
[root@localhost ~]# ls -A /etc/skel/

[root@localhost ~]# useradd nsd19
[root@localhost ~]# ls -A /home/nsd19

[root@localhost ~]# useradd nsd20
[root@localhost ~]# ls -A /home/nsd20

# 主要的初始配置文件
– ~/.bash_profile:每次登录系统时执行,定义初始变量值
– ~/.bashrc:每次进入新的Bash环境时执行(开启新的终端)

[root@localhost ~]# vim /root/.bashrc #定义永久别名
alias haha='echo haha'

# 开启新的终端进行测试:
[root@localhost ~]# haha
haha

– /etc/bashrc:全局配置文件,影响全体用户 (开启新的终端)

[root@localhost ~]# vim /etc/bashrc
alias xixi='echo xixi'

[root@localhost ~]# useradd nsd20
[root@localhost ~]# su - nsd20 #相当于开启新的终端
[nsd20@localhost ~]$ xixi
xixi
[nsd20@localhost ~]$ exit
登出
[root@localhost ~]#

# 删除用户
 userdel命令
格式:userdel [-r] 用户名
添加 -r 选项,宿主目录/用户邮件也一并删除
[root@localhost ~]# userdel -r nsd01 #连同家目录一并删除

[root@localhost ~]# userdel nsd02 #不删除家目录,只删除用户信息

# 组账户管理
 /etc/group,保存组帐号的基本信息
每个组记录一行,以:分割为4个字段
[root@localhost ~]# grep stugrp /etc/group
stugrp:x:1504:nsd06
组名:组密码占位符:组的GID:组成员列表

[root@localhost ~]# groupadd tarena #新建一个组
[root@localhost ~]# grep tarena /etc/group #查看组信息
tarena:x:1607:
[root@localhost ~]# useradd kaka
[root@localhost ~]# useradd nb
[root@localhost ~]# useradd jack
[root@localhost ~]# useradd kenji


# gpasswd命令
– 格式:gpasswd [选项]... 组名
• 常用命令选项
– -a:添加组成员,每次只能加一个
– -d: 删除组成员,每次只能删一个
– -M:定义组成员用户列表,可设置多个
– -A:定义组管理员列表

# gpasswd -a kaka tarena #添加用户kaka到tarena组
# grep tarena /etc/group #查看组信息
# id kaka
# gpasswd -a nb tarena #添加用户nb到tarena组
# grep tarena /etc/group

# gpasswd -M ‘jack,kenji’ tarena #定义组成员列表
# grep tarena /etc/group

# gpasswd -a nb tarena
# grep tarena /etc/group

# gpasswd -d nb tarena #将nb用户从tarena组中删除
# grep tarena /etc/group
# gpasswd -M ‘’ tarena #删除组中所有成员
# grep tarena /etc/group


-A:定义组管理员列表
[root@localhost ~]# su - nb
[nb@localhost ~]$ gpasswd -a kaka tarena
gpasswd:没有权限。
[nb@localhost ~]$ exit
[root@localhost ~]# gpasswd -A nb tarena #设置组管理员
[root@localhost ~]# su - nb
[nb@localhost ~]$ gpasswd -a kaka tarena
正在将用户“kaka”加入到“tarena”组中
[nb@localhost ~]$ exit
[root@localhost ~]#
 /etc/gshadow:组的管理信息配置文件
[root@localhost ~]# grep tarena /etc/gshadow
tarena:!:nb:
组名:密码加密字符串:组的管理员列表:组成员列表

 删除组账号:删除组的时候,不可以删除基本组
[root@localhost ~]# groupdel tarena
[root@localhost ~]# groupdel tmooc
[root@localhost ~]# grep tmooc /etc/group
[root@localhost ~]# grep tarena /etc/group



# 计划任务
用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
软件包:cronie、crontabs
系统服务:crond
日志文件:/var/log/cron

 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]

# 计划任务书写格式
分 时 日 月 周 任务命令行(绝对路径)
* * * * *
30 8 * * * #每天早上8:30 执行一次
30 23 * * * #每天晚上23:30 执行一次
30 23 * * 5 #每周的周五23:30 执行一次
30 23 * * 1-5 #每周的周一至周五23:30 执行一次
30 23 * * 1,3,6 #每周的周一周三周六23:30 执行一次
30 23 1 * 1 #每月的1号或每周一晚上23:30 执行一次
* * * * * #每分钟运行一次
*/5 * * * * #每隔5分钟运行一次
1 */2 * * * #每隔2小时运行一次


*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...


案例:
每分钟记录当前的系统时间,写入/opt/time.txt
[root@localhost ~]# date
[root@localhost ~]# date >> /opt/time.txt
[root@localhost ~]# cat /opt/time.txt
[root@localhost ~]# crontab -e #编写计划任务
* * * * * date >> /opt/time.txt

[root@localhost ~]# crontab -l #查看计划任务内容
* * * * * date >> /opt/time.txt

[root@localhost ~]# cat /opt/time.txt


# 命令补充
# 获取命令帮助
方式一:命令 --help
[root@localhost ~]# cat --help
方式二:man 命令
[root@localhost ~]# man cat #按q退出
[root@localhost ~]# man passwd #显示passwd命令帮助
[root@localhost ~]# man 5 passwd
数字5表示帮助的类型,表示配置文件类型

# 历史命令
管理/调用曾经执行过的命令
– history:查看历史命令列表
– history -c:清空历史命令
– !n:执行命令历史中的第n条命令
– !str:执行最近一次以str开头的历史命令

[root@svr7 ~]# vim /etc/profile
HISTSIZE=1000 #默认记录1000条

[root@localhost ~]# history #显示历史命令列表
[root@localhost ~]# history -c #清空历史命令
[root@localhost ~]# history
[root@localhost ~]# cat /etc/redhat-release
[root@localhost ~]# ls /root
[root@localhost ~]# history
[root@localhost ~]# !cat #执行最近一条以cat开头的历史命令
[root@localhost ~]# !ls #执行最近一条以ls开头的历史命令

# du,统计文件的占用空间
– du [选项]... [目录或文件]...
– -s:只统计每个参数所占用的总空间大小
– -h:提供易读容量单位(K、M等)
[root@localhost ~]# du -sh /root
[root@localhost ~]# du -sh /etc
[root@localhost ~]# du -sh /boot
[root@localhost ~]# du -sh /

# date,查看/调整系统日期时间
– date +%F、date +%R
– date +"%Y-%m-%d %H:%M:%S"
– date -s "yyyy-mm-dd HH:MM:SS"
# date
# date -s "2008-9-6 11:11:11" #修改系统时间
# date
# date -s "2021-8-5 16:28:00" #修改系统时间
# date

[root@localhost ~]# date +%Y #显示年
[root@localhost ~]# date +%m #显示月
[root@localhost ~]# date +%d #显示日期
[root@localhost ~]# date +%H #显示时
[root@localhost ~]# date +%M #显示分
[root@localhost ~]# date +%S #显示秒

[root@localhost ~]# date +%F #显示年-月-日
[root@localhost ~]# date +%R #显示时:分

# 制作链接文件(制作快捷方式)
格式:ln -s /路径/源数据 /路径/快捷方式的名称 #软链接
# ln -s /etc/sysconfig/network-scripts/ /ns
# ls /
# ls -l /ns #查看快捷方式的信息,结尾不要有/
# touch /ns/haha.txt
# touch /ns/maohehaozi.txt
# touch /ns/shukehebeita.txt
# ls /etc/sysconfig/network-scripts/

软链接优势:可以针对目录与文件制作快捷方式,支持跨分区
软链接缺点:源数据消失,快捷方式失效


格式:ln /路径/源数据 /路径/快捷方式的名称 #硬链接
硬链接优势:源数据消失,快捷方式仍然有效
硬链接缺点:只能针对文件制作快捷方式,不支持支持跨分区
[root@localhost ~]# rm -rf /opt/*
[root@localhost ~]# echo 123 > /opt/A.txt
[root@localhost ~]# ln -s /opt/A.txt /opt/B.txt #软链接
[root@localhost ~]# ls /opt/
[root@localhost ~]# ln /opt/A.txt /opt/C.txt #硬链接
[root@localhost ~]# ls /opt/
[root@localhost ~]# cat /opt/B.txt
[root@localhost ~]# cat /opt/C.txt
[root@localhost ~]# rm -rf /opt/A.txt
[root@localhost ~]# ls /opt/
[root@localhost ~]# cat /opt/B.txt #软链接失效
cat: /opt/B.txt: 没有那个文件或目录
[root@localhost ~]# cat /opt/C.txt #硬链接仍然有效

# zip归档工具,跨平台
• 归档+压缩操作: zip [-r] 备份文件.zip 被归档的文档...
[-r]:被归档的数据有目录,必须加上此选项
# zip -r /opt/abc.zip /etc/passwd /home
# ls /opt/
• 释放归档+解压操作: unzip 备份文件.zip [-d 目标文件夹]
# mkdir /sss
# unzip /opt/abc.zip -d /sss
# ls /sss
# ls /sss/etc/
# ls /sss/home/