本篇文章,在疫情期间经过再三总结,终于有一天不想只是躺在床上了,就坐在床上整理了一下。
大部门指令是有的,可以收藏了,以后需要用时,直接打开Ctrl+F,就行了,不用去百度里面筛选了。
好的,打住。
记录一下:
2020年2月25日15点31分!
——————————————————————————————————————————————————————
一、初识
Linux
命令行
1.
命令提示符各字段的含义
[
root
@
localhost
~
]
#
root
表示当前登录的用户名
localhost
表示主机名称
~
表示当前目录,家目录用波浪号
~
表示
#
表示当前用户的权限级别,管理员用户的级别用
#
号表示,普通用户的级别用
$
号表示
2.
什么是
家目录
,和
windows
系统里的
C:\Users\
用户名
这个目录是一样的意思,登录到系
统后默认所处的目录就是用户的家目录
3.
在命令行里输入
pwd
命令,回车,可以查看当前目录的完整路径
如上图,可见
root
用户的家目录就是
/root
普通用户的家目录为
/home/
用户名
4.
输入命令
who
可以查看当前登录到系统的所有用户,
输入
whoami
可以知道自己是哪个用户(以后说输入某条命令,默认是要按下回车键的)
root tty1 2019-12-10 06:03
用户名 终端 登录时间
5.Linux
下输入命令前几个字母后,如果没有二义性,可以按下
Tab
键自动补全命令,如果
有二义性,按下
Tab
键后会显示出所有匹配的命令
6.
可以按键盘上的箭头键的上下键
↑ ↓
,查看刚刚输入过的命令,当我们需要重复执行某个命
令时,可以按上箭头找到那条命令,再回车就可以了,不必每次都输入一长串命令。
7.
在输入命令时如果命令很长,突然决定不执行此命令时,没有必要一个字母一个字母地删
除,可以按下
Ctrl
和
U
键,删除一整行。这叫快捷键,常用的
Linux
命令行快捷键如下表:
8.
命令行里的命令本质是什么,或者说 什么是命令?
Linux
下的命令分
2
种,一种是内部命令,一种是外部命令
*
外部命令
其实就是程序名称,命令的第一个单词是系统里自带有的程序或新安装的程序,
之后的单词是传给这个程序的参数。这些程序可以是二进制程序,也可以是文本程序
(
shell
脚本等)
*
内部命令
就是命令行提供者(
shell
)自带的,是
shell
这个程序提供给用户的一些功能。
命令行里输入
type
加上目标命令,就可以查看目标命令的类型
比如查看
pwd
这个命令是何种类型的,可以输入命令:
type pwd
可见
pwd
是
shell
内嵌的,自带的内部命令。
而
who
命令是外部命令,是一个程序,该程序路径为
/bin/who
*
Linux
下的命令是区分大小写的
二、
Console
字体及屏幕分辨率设置
无论是在虚拟机的
console
控制台还是真实的设备显示器里,命令行的字体太小了,有时还
可能没有完整地使用整个屏幕,即显示的字符没有充满整个屏幕。
1.
输入命令
ls /lib/kbd/consolefonts/
可以查看系统自带的所有字体
2.
推荐使用
3
种不同大小的字体
lat2-16
sun12x22
latarcyrheb-sun32
3.
使用命令
setfont
字体名
可以设置
console
字体,以上三种字体都试一下,选一个适合
自己屏幕分辨率的就行
4.
输入
setfont
可以恢复默认的字体
5.
重启系统后,字体大小又恢复默认的了,需要在开机时就自动设置字体
这里涉及到
vi
的使用--不会的
使用
vi
编辑
/etc/rc.d/rc.local
文件
在文件末尾添加一行:
setfont sun12x22
保存
6.
然后给该文件添加可执行权限
命令
chmod +x /etc/rc.d/rc.local
这样字体的设置就永久生效了。
7.
设置屏幕分辨率
编辑
/boot/grub2/grub.cfg
文件,找到
/linux16 /boot/vmlinuz-3.10.0.xxxx...
这一行
在该行的末尾添加
vga=0x342
(
0x342
表示分辨率为
1152x864
)
保存,重启系统即可
其他分辨率设置:
vga=0x367 → 1920x1080
vga=0x342 → 1152x864
vga=0x341 → 1024x768
vga=0x340 → 800x600
(默认的大小)
重启系统后字体变成我们设置的大小了,
console
分辨率也变高了。
三、
Vi
文本编辑工具
vi
是
Linux
命令行下的一个文本编辑工具
在命令里下输入
vi
回车,进入
vi
工作界面
*
命令行下没法用鼠标,所以一切对文本的编辑都是要依靠某些辅助的命令,上图中也有提
示,比如按下
:q
(冒号加字母
q
,回车)可以退出
vi
我们先退出
vi
(按一下
Esc
键,再输入英文的冒号加小写字母
q
,回车)
*Vi
的用法有
2
种:
一种是直接输入
vi
回车,然后进行文本的编辑,再保存到文件中。
另一种用法是
vi
接目标文件名,再编辑。目标文件名可以是已经存在的文件,也可以是新
创建的。
*
最常用的用法是输入
vi
接目标文件名
比如我们想新建一个文本文件
test.txt
,可以输入
vi test.txt
然后就是上图的界面,刚进入
vi
时,所处的模式为
普通模式
,普通模式下不能输入文本字
符,但可以进行其他的操作,比如移动光标,删除文本,插入文本,复制文本,查看目标字
符串等。
*
接下来我们想输入文本字符,可以在普通模式下按入字母
i
(小写的
i
),不用回车,按下
字母
i
就可以输入文本了,能输入文本的模式称为
插入模式
。如何退回普通模式呢,可以
按下
Esc
键。
①
从普通模式进入插入模式
,除了可以按下小写的
i
,也可以按下其他的字母,不同的字母
含义是不同的:
插入模式下可以正常地输入任何字符(除了
Esc
键)
按下
Esc
键退回 普通模式
②
普通模式下的光标定位
③
普通模式下删除文本
④
普通模式下复制文本
⑤
普通模式下撤销操作
上面
5
种操作都是只输入字符而不用回车,以下的操作要按下回车才执行
⑥
普通模式进入命令模式
,以
/ : ?
开头就进入命令模式了
四、系统关机重启操作
系统启动前会出现如下界面让我们选择:(默认会选择第
1
个)
有
2
行可以选择,这
2
行表示
2
个启动项,第一行表示进入正常的系统,第
2
行表示进入救
援维护模式,当系统出现故障时,可以进入救援模式进行排错。
五、文件目录操作
#
pwd
//查看当前所处的目录
特殊目录表示
:
~
用户的家目录
.
当前目录,也可用
./
表示
..
上一层目录(父目录),也可用
../
表示
①
ls
命令
,用于列出文件及文件夹(目录),默认是列出当前目录下的文件
(
夹
)
,不显
示隐藏文件。(这里的
l
是字母
L
的小写格式)
ls -
选项 目标目录
//ls
的使用格式,目标目录缺省为当前目录
ls -a
//-a
表示列出所有文件,包括隐藏的
ls -l
//-l
表示以列表形式显示文件详细信息
ls -d /
目录
//
仅列出目录本身,查看目录本身的属性
ls -h
//
以方便阅读的单位显示文件的大小
ll
//ll
为
ls -l
的别名
在
console
下列出文件时,不同的颜色表示不同的文件类型:
浅白
:一般的文本字符文件
红色
:压缩文件
绿色
:可执行文件(程序或脚本)
浅蓝
:链接文件
蓝色
:目录文件
黄色
:设备文件
②
文件属性
(用
ll
命令查看)
以
fstab2
这个文件为例:
文件类型
:
-
表示普通文件
d
表示目录
/
表示链接文件
b
表示块设备(磁盘等)
c
表示字符设备(键盘等)
文件的权限后面有讲。
③
目录操作
[root@localhost
~
]#
~
表示当前所处目录(家目录)
[root@localhost
etc
]#
etc
表示当前所处目录(
/etc
)
*Linux
的文件系统只有一个根目录,即
/
(斜杠),相当于
windows
里的
C
盘
D
盘等根目录
(
windows
是可以有多个盘符的,每个盘符加上
:\
就是根目录,比如
C:\ D:\
)
Linux
的根目录并不代表只有一块磁盘一个分区,
/
根目录只代表操作系统能够访问到的资
源,根是系统级别的文件系统,一个磁盘分区可以挂载到
/
目录上,也可以挂载到
/
目录下的
任何一个子目录。
*
我们在安装系统时就创建了
2
个分区,一个(分区
1
)挂载到了
/boot
目录,另一个分区(分
区
2
)挂载到了
/
目录下,在不添加其他磁盘分区的情况下,我们对根目录
/
包括其子目录(除
了
boot
)做的操作都是在分区
2
上进行的,对根目录下的
boot
目录的操作都是在分区
1
上
进行的。可以用命令
lsblk
查看分区对应的目录(
sda
表示磁盘,
sda1
为磁盘上的分区
1
)
#
pwd
//
查看当前所处的目录
#
cd /etc
//
切换到
/etc
目录,
cd
表示切换目录(
change directory
)
#
cd ..
//
切换到上一层目录
#
cd -
//
切换到上一次所处的目录
#
cd ../a
//
切换到上一层目录下的
a
目录里
#
cd ~
//
切换到当前用户的家目录
#
mkdir xxx
//
在当前目录下创建一个名为
xxx
的目录
#
mkdir -p /root/dir1/dir2
//
递归创建目录及其子目录,当
dir1
不存在时就创建它
#
rmdir xxx
//
删除一个空目录
#
rmdir dir1/dir2
//
删除
dir1
下的
dir2
#
rmdir -p dir1/dir2
//
递归删除,先删除
dir2
,然后如果
dir1
下没有文件和其他
//
目录了,就把
dir1
也删除了
#
rm -r xxx
//
删除非空目录,目录里的文件也会被删除,删除前会有提示,
//
输入
y
表示确定删除,
n
表示不删除
27
#
rm -rf xxx
//
强制删除
xxx
目录及其包含的所有文件,不提示
#
du -sh /root
//
显示
/root
目录使用的容量(占用的大小),默认以
KB
为单位
//
使用
h
参数后表示以方便阅读的单位显示
④
文件操作
#
touch
文件名
//
如果文件已存在,则更新该文件的最后修改时间,
//
文件不存在则创建一个新的文件
#
cat
文件名
//
查看文件的内容
#
cat
文件名
| more
//
当文件内容太多时,一屏显示不下,可以用
more
进行分页
//
查看(没有进度提示)分页查看时,按下空格键可以向后翻一页,按下
P
键退出查看。
#
more
文件名
//
分页查看文件内容(有进度提示)
#
cat
文件名
| grep 'str'
//
只查看含有
str
字符串的行
#
cat
文件名
| grep -v '#'
//
不看含有
#
字符的行
#
grep 'xx'
文件名
//
在文件中查找含有
xx
字符的行
#
grep -v -'xx'
文件名
//
在文件中查找不含有
xx
字符的行
#
rm
文件名
//
删除文件,有提示
#
cp
源文件 目的文件
//
复制文件
#
cp -r
源目录 目的目录
//
递归复制目录及其所有子文件(子目录)
#
mv
源文件 目的文件
//
移动文件,也可在当前目录下移动,起到重命名的作用
#
cat
文件名
| wc -l
//
查看文件有多少行
#
head -n 5
文件名
//
只查看文件的前
5
行
#
tail -n 5
文件名
//
只查看文件的最后
5
行
⑤
查找文件
find
根据文件名查找
#
find
文件名
//
在当前目录下查找文件
#
find
目录名
-name xxx
//
在指定目录下查找所有名为
xxx
的文件(区分大小写)
#
find
目录名
-iname xxx
//
在指定目录下查找所有名为
xxx
的文件(不区分大小写)
#
find
目录名
-iname *xxx*
//
在指定目录下查找所有名为
xxx
的文件,
*
为模糊匹配
#
find
目录名
-user coflee
//
在指定目录下查找所有属于
coflee
用户的文件
根据时间查找
(
+5
表示在指定时间之前,
-5
表示在指定时间之内)
#
find
目录名
-mtime -3
//
在指定目录下查找
3
天之内被修改过的文件
#
find
目录名
-ctime +2
//
在指定目录下查找
2
天之前创建的文件(包括复制的)
#
find
目录名
-mmin -5
//
在指定目录下查找
5
分钟之内被修改过的文件
#
find
目录名
-mmin +5
//
在指定目录下查找
5
分钟之前被修改过的文件
根据文件类型
:
-type f
//
表示普通文件
-type b
//
表示块设备文件
-type c
//
表示字符设备文件
-type l
//
表示链接文件
-type d
//
表示目录
根据文件大小
:
-size -50M
//
表示
50MB
以内的
-size +20M
//
表示大于
20MB
的
-size +10M -size -15M
//
可叠加使用表示范围,
10~15MB
之内的
以上查找文件的各参数都可以
组合使用
。
比如:
find /dev -mmin -15 -size +1M -type f
//
表示在
/dev
目录下查找
15
分钟之内被修改过的大于
1MB
的普通文件
休息休息~16点17分
六、Linux 文件权限
①
文件权限说明
Linux 的文件权限有 3 个:读、写、执行(
r
ead、
w
rite、
e
xecute)(暂时说 3 个)
Linux 是多用户系统,在一个系统上可以允许多个用户登录并使用系统资源,所以一个文件
的权限根据用户的类型而分成 3 类,一类是对文件拥有者而言的,一类是对文件所在组的组
员的,一类是对其他人的。在查看文件的属性时,前面的那九个字符(rwx-字样的)就表示
文件的权限:
这 9 个字符分成 3 组(每组 3 个字符)
第 1 组表示文件拥有者(属主
u
ser)的权限
第 2 组表示文件所在组的组员(
g
roup)拥有的权限
第 3 组表示其他人(
o
ther)对该文件的权限
rwx
表示读写执行三个权限都有
r-x
其中的-横杠表示没有相应的权限,即
-
横杠所在的位置本来是写,所以用
-
横杠代替时
表示没有写权限
---
表示读写执行 3 个权限都没有
例
:
rwx
r-x
---
表示文件拥有者(属主)对文件有
读写执行
的权限,文件属组成员对文件有
读
和
执行
的权限,其他人对该文件
没有
权限
②
用数字表示权限
r
读权限的值为 4
w
写权限的值为 2
x
执行权限的值为 1
-
没有相应的权限的值为 0
每一组权限可以用其 3 个权限类型的值之合来表示,比如 wrx 可用 7 表示,r-x 用 6 表示,
r--用 4 表示,---用 0 表示等。
这样用 9 个字母表示的文件权限可以用 3 个数字表示:
rwxr-x---
可以记为 760
③
修改文件权限
#
chmod 775
文件名
//
把文件的权限改为
775
(
rwxrwxr-x
)
#
chmod +x
文件名
//
增加文件的
x
权限,即每一组都加上
x
执行权限
#
chmod g+w
文件名
//
增加组成员的
w
写权限,
g
代表文件属组
group
#
chmod u+x
文件名
//
增加文件拥有者的
x
执行权限,
u
代表拥有者
user
#
chmod o-w
文件名
//
减去其他人的
w
写权限,
o
代表其他人
other
#
chown
用户名 文件名
//
更改文件的拥有者
#
chown cof test.txt
//
把
test.txt
文件的属主改为
cof
用户
#
chgrp root test.txt
//
把
test.txt
文件的属组改为
root
组
④
文件生成掩码
我们创建一个新的文件时,默认的权限就是 文件的生成权限
如上图,我们创建文件时默认生成的权限是
rw-r--r--
(
644
)
少了哪些权限呢,少了
133
(属主的
x
,属组的
wx
,其他人的
wx
)
生成文件权限时默认缺少的权限值就叫 文件生成掩码
#
umask
//查看文件生成掩码
为什么是 0022 而不是 0133 呢,因为我们刚刚创建的文件默认就是普通文件,而不是可执行
文件,用编译工具生成的可执行文件的默认权限就是掩码 0022 对应的 rwxr-xr-x
#
umask 033
//
设置文件生成掩码(对应权限
744
:
rwxr--r--
)
⑤
特殊权限
刚刚查看文件生成掩码时,我们发现显示的是 0022,四位数字而不是我们想像中的 3 位数字,
这是怎么回事?
因为文件的权限本来就是 4 个,之前说 3 个是大家常认为的。其实是 4 个,还有一个特殊权
限,特殊权限用得少所以很少有人说起。4 位数字表示时最左边的那个就表示特殊权限。
特殊权限:
SUID
权限 表示无论是哪个用户来执行文件,都是以该文件的属主的身份去执行
SGID
权限 表示无论是哪个用户来执行文件,都是以该文件的属组成员的身份去执行
Sticky-bit
权限 表示仅允许文件的属主执行删除、移动等操作
这 3 个权限在用字母表示时不会额外占一个位置,只会共用 user,group,other 这三组的
x
权限的位置。
比如:
原来的每组上的
x
权限位置被特殊权限给占用,那么我们怎么判断该组权限上的
x
位原来的
时候有没有可执行权限呢?
看该特殊位字母的大小写,如果原来有可执行权限,则置为特殊权限时,显示为小写字母,
如果原来没有可执行权限,置为特殊权限时显示为大写字母。
特殊权限的数字表示
:
suid
值为
4
sgid
值为
2
sticky-bit
值为
1
特殊权限的设置
#
chmod
4
755
文件名
//添加
suid
权限,(其他
3
个权限为
755
)
#
chmod u+s
文件名
//添加
suid
权限,以字母的形式添加
#
chmod g+s
文件名
//添加
sgid
权限
#
chmod o+t
文件名
//添加
sticky-bit
权限
#
chmod 0755
文件名
//
设置权限为
0755
,无特殊权限
0755
和
755
是一样的,权限在用数字设置时,最先从右边开始赋值,左边没有的时候默认
为
0
,所以
chmod 5
的时候,默认就是
0005
七、系统基本信息
命令提示符各字段的含义
[
root
@
localhost
~
]
#
root
表示当前登录的用户名
localhost
表示主机名称
~
表示当前目录,家目录用波浪号
~
表示
①
主机名称
是保存在
/etc/hostname
文件里的,可以编辑该文件,设置成我们要设置的主机
名,重启系统才生效。
#
hostname
//
查看主机名(全称)
#
vi /etc/hostname
//
编辑主机名配置文件,内容为主机名
保存,重启系统后主机名称修改成功
②
查看
Linux
发行版本
信息
#
uname -r
//
查看
Linux
内核版本
#
uname -a
//
查看详细的版本信息
#
cat /etc/centos-release
//
查看
centos
发行版本号
#
cat /etc/redhat-release
//
查看
redhat
发行版本号(因为
centos
系统是由
redhat
释
出的源代码编译而来的,所以有些
redhat
上的信息,在
centos
上也保留了)
③
CPU
及内存信息
#
lscpu
//
查看
cpu
信息
#
cat /proc/cpuinfo
//
查看
cpu
信息
#
getconf LONG_BIT
//
查看
cpu
位宽
#
free -m
//
查看内存资源使用情况,
total
表示总的大小,
//-m
表示以
MB
为单位显示
④
查看系统默认语言
环境
#
echo $LANG
//查看系统使用的语言及字符编码
⑤
查看磁盘及分区
情况
#
lsblk
//查看磁盘及分区情况
上图中,
sda
为硬盘,
sr0
为光盘,
sda
磁盘划分了
2
个分区(
sda1
和
sda2
)
sda1
分区挂载
到了
/boot
目录下,
sda2
分区挂载到了
/
根目录下。
⑥
查看系统时间
#
date
//查看当前的时间
#
timedatectl
//查看详细的时间信息
#
uptime
//
查看系统运行时长,显示的第一个时间为当前时间,
//UP
之后的时间为开机运行时长
⑦
系统时间设置
#
timedatectl status
//
先查看时间基本信息,默认情况下是使用
NTP
服务的
#
timedatectl list-timezones
//
列出所有预设的时区
#
timedatectl set-timezone Asia/Shanghai
//
设置时区为上海时区
#
timedatectl set-ntp false
//
不使用
ntp
,需要用的话把
false
改为
true
#
timedatectl set-time '2019-12-11 17:01:00'
//
设置日期及时间(不用
ntp
时)
#
timedatectl set-local-rtc 1
//
将硬件时钟设为本地时间(这里指上海时区的)或者
#
timedatectl set-local-rtc 0
//
将硬件时钟设为
RTC
世界时间
配置完成后查看一下
⑧
修改命令行提示符
命令行提示符是由 shell 程序提供的,所以也叫 shell 提示符
默认是
[用户名@主机名 目录]# 的形式,没有色彩,可以自定义样式
#
echo $PS1
//查看默认的 shell 提示符样式
\u
表示用户名
\h
表示主机名(如果是
FQDN
名称,则主显示最前面的一级)
\W
表示当前目录(仅显示最后一级目录)
\$
表示权限提示符
其他格式
\H
表示主机名,
FQDN
全称
\w
表示当前目录(绝对路径)
\t
表示当前时间,
24
小时制,
HH:MM:SS
\A
表示当前时间,
24
小时制,
HH:MM
\#
表示本次登录以来下达的第 几个命令
\
斜杠开头的为格式,在显示的时候会转为相应的信息,没有
\
斜杠开头的字符都是会直接在
命令行里显示出来的。
颜色设置
\[\e[
前景色编号
;
背景色编号
m\]
//
设置颜色的格式,放在每个字符前面
默认为
\[\e[m\]
//
设置完颜色后,要接上这个字段恢复默认的颜色
颜色对应的编号:
需要自定义
shell
提示符,只要在
/etc/bashrc
文件末尾添加如下一行即可:
PS1='[\
自定义的格式
]..
'
//
注意不要漏了单引号
'
保存,重新登录就能看到效果。
自定义
shell
提示符示例
1
:(仅自定义颜色)
PS1='[
\[\e[33;40m\]
\u
\
[\e[m\]
@
\[\e[36;40m\]
\h
\[\e[m\]
\W]\$'
保存,退出登录(使用命令
exit
),再重新登录就看到效果了
自定义
shell
提示符示例
2
:
PS1='
[
\[\e[33;40m\]
~@_@~
\[\e[35;40m\]
\t
\[\e[m\]
>>
\[\e[32;40m\]
\h
\[\e[m\]
]\$
'
八、别名和链接的创建
①
命令别名
有时命令太长不好记,可以用一个简写单词 来表示,这个简写的单词就是命令别名
#
type
别名
//
查看别名对应的真实的命令
比如
Centos
中默认创建有一个命令别名
ll
#
type ll
//
查看
ll
命令别名对应的真实的命令
可见
ll
对应的真实命令是
ls -l --color=auto
#
which
别名
//
查看别名对应的真实的命令
可见
ls
本身也是一个别名,
ls
是
ls --color=auto
的别名
创建我们自定义的命令别名
#
alias
别名
='
命令
'
//
命令行下临时地添加一条命令别名,重启系统后失效
有时输入
ll
或
ls
查看文件时,默认是以字节为单位显示文件大小的,要以方便阅读的单位
显示,需要加上参数
-h
,为了方便还可以将
ll
设置为
ls -lh
的别名
#
alias ll='ll -lh'
要使命令别名永久生效,可以将别名写进
shell
的配置文件里
~/.bashrc
该文件的配置仅对用户自己生效
/etc/bashrc
该文件的设置对全局有效
#
vi ~/.bashrc
//
编辑个人的
shell
配置文件,在末尾添加自定义的命令别名
保存,
#
source ~/.bashrc
//
执行此配置文件,使别名生效
*
当别名和真实的命令名称相同时,默认是执行别名,比如
ls
默认执行的是
ls
这个别名,相当于执行
ls --color=auto
那么要指定执行真实的命令本身,怎么办,可以在命令前面加上
\
反斜杠
看出区别了吧,
ls
真实的命令本身是不输出彩色的,
ls
别名(
ls --color=auto
)才输出彩色
作者本人就喜欢把一些危险操作命令设置成别名,这样可以防止其他人误操作引起的严重后
果。当需要输入真实的命令本身时,在命令前面加上
\
反斜杠就行了,其他人一般都不知道。
比如:
alias rm='echo Warning: you donot have permission to rm '
这样无论别人用
rm
命令删除什么文件,都会提示
:
Warning: you donot have permission to rm
文件名
想要删除文件时需要加上
\
反斜杠。
②
文件链接
文件的链接就相当于
Windows
里的快捷方式,
Windows
桌面上的图标文件都是可执行程序
的链接
链接有
2
种:
软链接
:也叫符号链接,当原文件被删除时,链接失效
硬链接
:当原文件被删除时,链接仍有效,数据未删除,只是删除原文件的名称
创建链接
#
ln
目标文件 链接名称
//
创建软链接
#
ln -s
目标文件 链接名称
//
创建硬链接
九、系统运行级别
系统运行级别就是系统是以何种模式运行的,比如以命令行模式运行,以桌面模式运行等。
关机和重启也算是运行模式
Linux
的系统默认有
7
个运行级别
runlevel 0
到
runlevel 7
,只不过
Centos7
开始不用
runlevel
表示运行级别,换了一套方案,叫作
target
。
Centos7
系统运行目标有
5
个,对应以前的
7
个
runlevel
#
systemctl get-default
//
查看系统默认的运行目标
#
runlevel
//
查看系统默认的运行级别
上图显示默认是以命令行模式启动
*
如果在安装系统时,安装的是最小化版本
minimal
版本,则不能以图形界面的运行级别启
动。如果安装的是图形界面版本,则可以用命令行或图形界面启动。
#
systemctl set-default
目标
target
//
设置默认的启动目标,重启生效
#
init 0~6
//
立即进入目标级别,比如
init 6
立即重启,
init 0
立即关机,
//init 5
立即重启进入
graphical.target
图形界面
十、
Systemd
初始化服务
*
程序的每一个运行实例都是一个进程,
Linux
系统上运行着普通的进程和守护进程。
守护进程就是为用户提供服务的进程,主要有
2
类:
系统守护进程:为本地用户提供服务的,提供给用户的基本功能
网络守护进程:为远程的网络用户提供服务的,如
web
服务,
ssh
服务,
ftp
服务等。
*
系统初始化进程是一个特殊的守护进程,其
pid
为
1,
它用于管理系统上的所有守护进程
比如要开启哪些守护进程,关闭哪些守护进程都是由系统初始化进程去完成的。
*Linux
用过的系统初始化进程有:
SysVinit
用在
RHEL/Centos5
及以前的版本上
Upstart
用在
RHEL/Centos6
Systemd
用在
RHEL/Centos7
*
在
Centos7
中,系统启动后,先由内核去启动
systemd
这个进程,再由
systemd
去启动其他
的进程,
systemd
这个服务提供了一个命令行工具名为
systemctl
用
systemctl
这个工具可以管理基于
Systemd
的服务
#
systemctl --type service
//
显示当前运行的所有服务
#
systemctl --type service --all
//
显示系统中所有的服务,包括未运行的
#
systemctl --type service --failed
//
显示已加载但处于
faiiled
状态的服务
#
systemctl status
服务名
//
查看目标服务的当前状态
#
systemctl start
服务名
//
启动目标服务
#
systemctl restart
服务名
//
重启服务
#
systemctl try-restart
服务名
//
仅当服务在运行时,才重启
#
systemctl stop
服务名
//
关闭服务
#
systemctl reload
服务名
//
重新加载服务的配置
#
systemctl list-unit-files
//
查看所有服务是否为开机自启
STATE
状态说明:
static
表示必须随开机启动,用户不能设置的
disabled
表示没有随开机启动,用户可以设置为
enabled
enabled
表示随开机启动,用户可以设置为
disabled
masked
表示隐藏的,不能直接设置它
#
systemctl enable
服务名
//
将目标服务设置为 随开机型启动
#
systemctl disable
服务名
//
将目标服务设置为不随开机启动
十一、用户和组操作
①
用户操作
#
useradd
用户名
//创建一个用户
#
id
用户名
//
查看该用户的基本信息
uid
表示用户的唯一标识,
gid
表示该用户当前的属组
id
,
groups
表示用户的属组
新创建用户时,默认是会创建一个和用户名同名的组,这个组叫做 私有组,新创建的用户
默认加入和用户名同名的私有组中。如果想将用户再加入其他组中,那么其他组对于该用户
而言,就是附加组。一个用户可以加入多个组中。
#
usermod -G
组名 用户名
//
将用户加入附加组中
#
useradd -u 1004
用户名
//
创建用户同时指定其
uid
为
1004,uid
可自定义
旧版的系统中,普通用户的默认
uid
是从
500
开始编号的,
Centos7
中是从
1000
开始编号
#
usermod -u 1009
用户名
//
修改用户的
uid
为
1009
#
passwd -S
用户名
//
查看该用户的密码状态
密码状态说明:
LK
表示锁定,用户不能登录系统
PS
表示密码已设置,可登录系统
NP
表示无密码(可本地登录,不能远程登录)
#
passwd
用户名
//
给用户设置密码(输入密码时是没有显示的,只管输入)
#
passwd -l
用户名
//
锁定用户,用户被锁定后不能登录系统,密码状态为
LK
#
passwd -u
用户名
//
解除锁定,可登录
#
passwd -d
用户名
//
清除用户的口令,用户的密码状态变成
NP
#
usermod -l Licof coflee
//
将
coflee
用户 更名为
Licof
,其家目录不变
//coflee
之前家目录为
/home/coflee
,更名为
Licof
//
后,再登录系统,其家目录仍然为
/home/coflee
如何查看用户的家目录呢?
在
/etc/passwd
文件里查看,如下图,可见用户更名后,其家目录没有变
#
usermod -d /home/Licof Licof
//
将
Licof
用户的家目录指定为
/home/Licof
//
设置时,先为该用户创建
/home/Licof
目录,然后将该目录的属主改为
Licof
,
且该用户要先退出登录,才能重新指定其家目录为
/home/Licof
。
用户再次登录系统后,就会进入
/home/Licof
的目录
#
usermod -d /home/xxx -m xxx
//
指定
xxx
用户的家目录为
/home/xxx
,且把原来的
家目录里的文件移到新的家目录中
#
userdel xxx
//
删除用户,保留其家目录
#
userdel -r xxx
//
删除用户且不保留其家目录
#
useradd -d /www -M
用户名
//
创建用户,指定其登录的默认目录为
/www
,
//
不为该用户创建家目录
#
useradd -s /sbin/nologin
用户名
//
创建用户时,指定其登录的
shell
为
/sbin/nologin
,表示没有
shell
,即不能登录系统
②
组操作
#
groupadd -g 3000
组名
//
创建一个组并指定其组
id
为
3000
#
groupmod -n xxx coflee
//
将
coflee
组更名为
xxx
#
groupdel
组名
//
删除该组
③
用户口令时效
#
chage -d 0
用户名
//
该用户下次登录系统时,必须更改密码,
// -d
表示允许不更改密码的天数,
0
表示下次登录就得更改
#
chage -m 2 -M 30 -W 3
用户名
//
该用户在将来的
2
至
30
天内必须更改
//
密码,且在
30
天到期前
3
天会提醒
#
chage -E 2019-12-30
用户名
//
指定用户帐号被锁定的日期
④
用户及组信息查看
#
who
//
查看系统当前登录的用户
#
whoami
//
查看自己是哪个用户
#
id
用户名
//
查看指定用户的信息,不指定用户名时,默认是查看自己
#
groups
用户名
//
查看指定用户的属组信息,
//
不指定用户名时,默认是查看自己的当前属组(主组)
一个用户可以属于多个组,但在同一时刻,只能属于某个具体的属组,叫做主组
#
newgrp
组名
//
切换当前用户的主组
#
su
用户名
//
切换用户
#
su -
用户名
//
切换用户并进入其家目录
————————————————————————————————————————————————————————时间:
2020年2月26日14点27分!