教你玩转Linux(linux指令总写)

本篇文章,在疫情期间经过再三总结,终于有一天不想只是躺在床上了,就坐在床上整理了一下。

大部门指令是有的,可以收藏了,以后需要用时,直接打开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分!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
发布了78 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/kxindouhao5491/article/details/104498435
今日推荐