此篇文章为近期整理的Linux基础内容,较多较杂,阅读可能会稍微花费一点时间
。前九章相关文字叙述较多,第十章为上百条命令的汇总,有需要可直接移至文末。
一、操作系统
(一)操作系统的含义
- Operation System, OS
- 没有安装操作系统的计算机,通常被称为裸机
- 如果想在裸机上运行编写的程序,就必须使用机器语言书写程序
- 如果在计算机上安装操作系统,就可以在操作系统上安装支持的高级语言环境,从而用更易编写的高级语言开发程序
(二)操作系统的作用
- 是现代计算机系统中 最基本和最重要 的系统软件
- 是 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
- 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,便于使用
- 其他的诸如编译程序、数据库管理系统,以及大量应用软件,都直接依赖于操作系统的支持
(三)主流操作系统
- 桌面操作系统
- 服务器操作系统
- 嵌入式操作系统
- 移动设备操作系统
(1)桌面操作系统
- Windows
用户群体大,应用软件丰富- macOS
适合开发人员
- Linux
应用软件较少
(2)服务器操作系统
- Linux
安全、稳定、免费
占有率高- Windows Server
付费
占有率低
(3)嵌入式操作系统
- Linux
(4)移动设备操作系统
- iOS
- Android (基于 Linux)
(四)虚拟机
虚拟机(Virtual Machine)指通过软件模拟具有硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
- 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有与真实操作系统完全一样的功能
- 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响
- 而且能够在现有系统与虚拟镜像之间灵活切换
(五)Linux内核及发行版
(1)Linux内核版本
- 内核(kernel)是系统的心脏,是运行程序和管理硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
- 稳定版: 具有工业级强度,可以广泛应用和部署。新的稳定版相对于较旧稳定版只是修正一些 bug 或加入一些新的驱动程序
- 开发版: 由于要试验各种解决方案,所以更新变化很快
- 内核源码网址:http://www.kernel.org
- 来自全世界对 Linux 源码的修改最终都会汇总到这个网站,由 Linus 领导的开源社区对其进行甄别和修改,最终决定是否进入到 Linux 主线内核源码中
(2)Linux发行版本
- Linux 发行版(或GNU/Linux发行版)通常包含了桌面环境、办公套件、媒体播放器、数据库等应用软件
- 常见的发行版本如下:
- Ubuntu
- Redhat
- Fedora
- CentOS
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- Arch
(六)Linux应用领域
(1)服务器领域
- Linux 在服务器领域的应用是其重要分支
- Linux 免费、稳定、高效等特点在这里得到了很好的体现
(2)嵌入式领域
- 近些年来 Linux 在嵌入式领域的应用得到了飞速提高
- Linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到极大提高
- 主要应用:机顶盒、数字电视、网络电话、程控交换机、PDA等
(3)个人桌面领域
- 此领域是传统 Linux 应用最薄弱的环节
- 传统 Linux 由于界面简单、操作复杂、应用软件少等缺点,一直被 Windows 所压制
- 近些年来随着 Ubuntu、Fedora 等优秀桌面环境的兴起,同时各大硬件厂商支持力度加大,Linux 在个人桌面领域的占有率在逐渐提高
二、Linux终端命令格式
(一)终端命令格式
command [-options] [parameter]
command
:命令名,相应功能的英文单词或单词的缩写[-options]
:选项,可用来对命令进行控制,也可以省略parameter
:传给命令的参数,可以是 零个、一个 或者 多个
(二)命令帮助信息
(1)–help
command --help
- 显示command命令的帮助信息
(2)man
man command
- 查阅command命令的使用手册
- man是manual的缩写,是Linux提供的一个手册,包含了绝大部分命令、函数的详细使用说明
操作键 | 功能 |
---|---|
空格键 | 显示手册的下一屏 |
Enter键 | 滚动手册的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出手册 |
/word | 搜索word字符串 |
三、常用Linux命令
(一)学习原因
- 大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,这些工作都需要通过命令来完成
- Linux 发行版本的命令大概有 200 多个,常用的命令只有 10 多个
- 不要尝试一次学会所有的命令,有些命令不常用的,临时遇到,临时搜索
(二)基本使用
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前文件夹下的内容 |
02 | pwd | print work directory | 查看当前所在文件夹 |
03 | cd [目录名] | change directory | 切换文件夹 |
04 | touch [文件名] | touch | 如果文件不存在,新建文件 |
05 | mkdir [目录名] | make directory | 创建目录 |
06 | rm [文件名] | remove | 删除指定的文件名 |
07 | clear | clear | 清屏 |
小技巧
ctrl + shift + =
放大终端窗口的字体显示ctrl + -
缩小终端窗口的字体显示
(三)自动补全
- 在敲出
文件
/目录
/命令
的前几个字母后,按下tab
键- 如果输入没有歧义,系统会自动补全
- 如果还存在其他
文件
/目录
/命令
,再按一下tab
键,系统会提示可能存在的命令- 按
上
/下
光标键可在曾经使用过的命令之间来回切换- 若要退出选择,且不执行当前选中的命令,可以按
ctrl + c
四、其他命令
(一)查找文件
find
命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件
# 如果省略路径,表示在当前文件夹下查找
1.搜索目录下,文件名包含 1 的文件
find [路径] -name "*1*"
2.搜索目录下,所有以 .txt 为扩展名的文件
find [路径] -name "*.txt"
3.搜索桌面目录下,以数字 1 开头的文件
find [路径] -name "1*"
(二)软链接
ln -s
被链接的源文件 链接文件
- 建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式
- 没有
-s
选项建立的是一个 硬链接文件 ,而不是软链接- 两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
- 源文件要用绝对路径,不能用相对路径,方便移动链接文件后,仍能正常使用
- 使用
ls -l
查看文件的硬链接数(硬链接–有多少种方式可以访问文件或者目录)- 在 Linux 中,只有文件的
硬链接数 == 0
才会被删除
(三)打包和压缩
- 在不同操作系统中,常用的打包压缩方式是不同的
Windows
常用rar
Mac
常用zip
Linux
常用tar.gz
(1)打包/解包
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径
# 解压文件
tar -xvf 打包文件.tar
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
(2)压缩/解压缩
<1>gzip
tar
与gzip
命令结合可以实现文件 打包和压缩
tar
只负责打包文件,但不压缩- 用
gzip
压缩tar
打包后的文件,其扩展名一般用xxx.tar.gz
- 在
Linux
中,最常见的压缩文件格式就是xxx.tar.gz
- 在
tar
命令中有一个选项-z
可以调用gzip
,从而可以方便的实现压缩和解压缩的功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
<2>bzip2
tar
与bzip2
命令结合可以实现文件 打包和压缩(用法和gzip
一样)
tar
只负责打包文件,但不压缩- 用
bzip2
压缩tar
打包后的文件,其扩展名一般用xxx.tar.bz2
- 在
tar
命令中有一个选项-j
可以调用bzip2
,从而可以方便的实现压缩和解压缩的功能
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
# 解压缩文件
tar -jxvf 打包文件.tar.bz2
(四)软件安装
(1)通过apt安装/卸载软件
- apt 是
Advanced Packaging Tool
,是 Linux 下的一款安装包管理工具- 可以在终端中方便的 安装/卸载/更新软件包
1.安装软件
$ sudo apt install 软件包
2.卸载软件
$ sudo apt remove 软件名
3.更新已安装的包
$ sudo apt upgrade
(2)配置软件源
- 如果希望更加快速安装软件,可以设置镜像源,选择访问网速更快的服务器,来提供软件下载/安装服务
- 更换服务器之后,有相对较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件
- 所谓镜像源,就是所有服务器的内容是相同的(镜像),但是所在位置不同,国内服务器通常速度会更快一些
五、文件和目录
(一)单用户操作系统和多用户操作系统
- 单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源
- Windows XP 之前的版本都是单用户操作系统
- 多用户操作系统:指一台计算机在同一时间可以由 多个用户 使用,多个用户共同享用系统的全部硬件和软件资源
- Unix 和 Linux 的设计初衷就是多用户操作系统
(二)Windows和Linux文件系统区别
(1)Windows下的文件系统
- 在
Windows
下,打开 “计算机”,看到的是一个个驱动器盘符
- 每个驱动器都有自己的根目录结构,这样形成了多个树
并列
的情形
(2)Linux下的文件系统
- 在
Linux
下,看不到这些驱动器盘符,我们看到的是文件夹(目录)
Ubuntu
没有盘符这个概念,只有一个根目录/
,所有文件都在它下面
(3)用户目录
位于
/home/user
,称之为用户工作目录或家目录
(4)Linux主要目录速查表
/
根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录
- 输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin
可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等/boot
放置 linux 系统启动时用到的文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub/dev
存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用挂载光驱mount /dev/cdrom /mnt/etc
系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
- /etc/inittab
- /etc/fstab
- /etc/init.d
- /etc/X11
- /etc/sysconfig
- /etc/xinetd.d
/home
系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
- ~ 表示当前用户的家目录
- ~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib
系统使用的函数库目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助/lost+fount
系统异常产生错误时,会将一些遗失的片段放置于此目录下/mnt: /media
光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,可以选择任意位置挂载/opt
给主机额外安装软件所放置的目录/proc
此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有
- /proc/cpuinfo
- /proc/interrupts
- /proc/dma
- /proc/ioports
- /proc/net/
/root
系统管理员root的家目录/sbin、/usr/sbin、/usr/local/sbin
放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用/tmp
一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下/srv
服务启动后需要访问的数据目录,如 www 服务需要访问的网页数据放在 /srv/www 内/usr
应用程序存放目录
- /usr/bin:存放应用程序
- /usr/share:存放共享数据
- /usr/lib:存放不能直接运行的,却是程序运行所必需的一些函数库文件
- /usr/local:存放软件升级包
- /usr/share/doc:系统说明文件存放目录
- /usr/share/man:程序说明文件存放目录
/var
放置系统执行过程中经常变化的文件
- /var/log:随时更改的日志文件
- /var/spool/mail:邮件存放的目录
- /var/run:程序或服务启动后,其 PID 存放的目录
六、文件和目录常用命令
(一)查看目录内容
ls
是英文单词 list 简写,功能为列出目录内容,类似于 DOS 下的dir
命令- Linux 下文件和目录的特点
- Linux 文件 或者 目录 名称最长可以有
256
个字符- 以
.
开头的文件为隐藏文件,需要用-a
参数才能显示.
代表当前目录..
代表上一级目录
ls常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
ls通配符的使用
通配符 | 含义 |
---|---|
* | 代表任意个数字符 |
? | 代表任意一个字符,至少 1 个 |
[] | 表示可以匹配字符组中的任一一个 |
[abc] | 匹配 a、b、c 中的任意一个 |
[a-f] | 匹配从 a 到 f 范围内的的任意一个字符 |
计算机中文件大小的表示方式
单位 | 英文 | 含义 |
---|---|---|
字节 | B(Byte) | 在计算机中作为一个数字单元,一般为 8 位二进制数 |
千 | K(Kibibyte) | 1 KB = 1024 B,千字节 (1024 = 2 ** 10) |
兆 | M(Mebibyte) | 1 MB = 1024 KB,百万字节 |
千兆 | G(Gigabyte) | 1 GB = 1024 MB,十亿字节,千兆字节 |
太 | T(Terabyte) | 1 TB = 1024 GB,万亿字节,太字节 |
拍 | P(Petabyte) | 1 PB = 1024 TB,千万亿字节,拍字节 |
艾 | E(Exabyte) | 1 EB = 1024 PB,百亿亿字节,艾字节 |
泽 | Z(Zettabyte) | 1 ZB = 1024 EB,十万亿亿字节,泽字节 |
尧 | Y(Yottabyte) | 1 YB = 1024 ZB,一亿亿亿字节,尧字节 |
(二)切换目录
cd
是英文单词 change directory 简写,功能为更改当前工作目录- 相对路径和绝对路径
- 相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置
- 绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置
命令 | 含义 |
---|---|
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd … | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
(三)创建和删除操作
touch
创建文件或修改文件时间
- 如果文件 不存在,则创建一个空白文件
- 如果文件 已经存在,则修改文件的末次修改日期
mkdir
创建一个新目录
- -p 递归创建目录
- 新目录 不能与当前目录中 已有目录或文件 同名
rm
删除文件或目录
- -f 强制删除,忽略不存在的文件,无需提示
- -r 递归地删除目录下的内容,删除文件夹 时必须加此参数
- 使用 rm 命令要小心,因为文件删除后不能恢复
(四)拷贝和移动文件
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件 目标文件 | copy | 复制文件或者目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
(1)tree
tree
命令可以以树状图列出文件目录结构- -d 只显示目录
(2)cp
cp
命令可以将 文件 或 目录 复制到另一个 文件 或 目录 中,相当于 DOS 下的copy
命令- -i 覆盖文件前提示
- -r 若源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
(3)mv
mv
命令可以 移动 文件 或 目录,也可以给 文件或目录重命名- -i 覆盖文件前提示
(五)查看文件内容
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等 |
02 | more 文件名 | more | 分屏显示文件内容 |
03 | grep 搜索文本 文件名 | grep | 搜索文本文件内容 |
(1)cat
cat
命令可以 查看文件内容、创建文件、文件合并、追加文件内容 等cat
会一次显示所有的内容,适合 查看内容较少 的文本文件- -b 对非空输出行进行编号
- -n 对输出的包括空白行在内所有行进行编号
(2)more
more
命令可以分屏显示文件内容,每次只显示一页内容- 适合于 查看内容较多的文本文件
使用more的操作键
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter 键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
(3)grep
- Linux 系统中
grep
命令是一种强大的文本搜索工具grep
允许对文本文件进行 模式查找,所谓模式查找,又称为正则表达式- -n 显示匹配行及行号
- -v 显示不包含匹配文本的所有行(相当于求反)
- -i 忽略大小写
常用的两种模式查找
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
(六)其他
(1)echo
echo
文字内容echo
会在终端中显示参数指定的文字内容,通常会和 重定向 联合使用
(2)重定向
- Linux 允许将命令执行结果 重定向到一个 文件
- 将本应显示在终端上的内容 输出/追加 到指定文件中
>
表示输出,会覆盖文件原有的内容>>
表示追加,会将内容追加到已有文件的末尾
(3)管道
- Linux 允许将 一个命令的输出 可以通过管道 作为 另一个命令的输入
|
的左右分为两端,左端塞东西(写),右端取东西(读)- 常用的管道命令
more
:分屏显示内容grep
:在命令执行结果的基础上查询指定的文本
七、系统信息相关命令
(一)时间和日期
命令 | 作用 |
---|---|
date | 查看系统时间 |
cal | calendar 查看日历,-y 选项可以查看一年的日历 |
(二)磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h [目录名] | disk usage 显示目录下的文件大小 |
(三)进程信息
ps
默认只会显示当前用户通过终端启动的应用程序- 使用
kill
命令时,最好只终止由当前用户开启的进程,而不要终止root
身份开启的进程,否则可能导致系统崩溃- 要退出
top
可以直接输入q
命令 | 作用 |
---|---|
ps aux | process status 查看进程的详细状况 |
top | 动态显示运行中的进程并且排序 |
kill [-9] 进程代号 | 终止指定代号的进程,-9 表示强行终止 |
ps选项说明
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
八、用户权限相关命令
(一)用户和权限的基本概念
(1)基本概念
- 用户 是 Linux 系统工作中重要的一环,用户管理包括 用户 与 组 管理
- 在 Linux 中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
- 在 Linux 中,可以指定 每一个用户 针对 不同的文件或者目录 的 不同权限
- 在实际应用中,可以预先针对 组 设置好权限,然后 将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限
对 文件/目录 的权限包括
权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|
读 | read | r | 4 |
写 | write | w | 2 |
执行 | excute | x | 1 |
(2)ls -l扩展
ls -l
可以查看文件夹下文件的详细信息,从左到右依次是:
- 权限,第 1 个字符如果是
d
表示目录- 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
- 拥有者,家目录下 文件/目录 的拥有者通常都是当前用户
- 组,在 Linux 中,很多时候,会出现组名和用户名相同的情况
- 大小
- 时间
- 名称
(3)chmod简单使用
chmod
可以修改 用户/组 对 文件/目录 的权限- 命令格式:
chmod
+/-rwx 文件名|目录名- 以上方式会一次性修改
拥有者
/组
权限
(4)超级用户
- Linux 系统中的
root
账号通常 用于系统的维护和管理,对操作系统的所有资源 具有所有访问权限- 在大多数版本的 Linux 中,都不推荐直接使用 root 账号登录系统
- 在 Linux 安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为标准用户
sudo
su
是substitute user
的缩写,表示 使用另一个用户的身份sudo
命令用来以其他身份执行命令,预设身份为root
- 用户使用
sudo
时,必须先输入密码,之后有 5 分钟的有效期限,超过期限必须重新输入密码- 若未经授权的用户企图使用
sudo
,则会发出警告邮件给管理员
(二)用户管理终端命令
创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过
sudo
执行
(1)创建用户/设置密码/删除用户
- 创建用户时,如果忘记添加
-m
选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建- 创建用户时,默认会创建一个和用户名同名的组名
- 用户信息保存在
/etc/passwd
文件中
命令 | 作用 | 说明 |
---|---|---|
useradd -m -g 组 新建用户名 | 添加新用户 |
|
passwd 用户名 | 设置用户密码 | 如果是普通用户,直接用 passwd 可以修改自己的账户密码 |
userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
cat /etc/passwd | grep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在 /etc/passwd 文件中 |
(2)查看用户信息
命令 | 作用 |
---|---|
id [用户名] | 查看用户 UID 和 GID 信息 |
who | 查看当前所有登录的用户列表 |
whoami | 查看当前登录用户的账户名 |
- passwd文件
/etc/passwd
文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地帐号
- 家目录
- 登录使用的 Shell,就是登录之后,使用的终端命令,
ubuntu
默认是dash
- usermod
usermod
可以用来设置 用户 的 主组 / 附加组 和 登录 Shell,命令格式如下:
- 主组:通常在新建用户时指定,在
etc/passwd
的第 4 列 GID 对应的组- 附加组:在
etc/group
中最后一列表示该组的用户列表,用于指定 用户的附加权限- 设置了用户的附加组之后,需要重新登录才能生效
# 修改用户的主组(passwd中的 GID)
usermod -g 组 用户名
# 修改用户的附加组
usermod -G 组 用户名
# 修改用户登录shell
usermod -s /bin/bash 用户名
# 默认使用useradd添加的用户没有权限使用sudo以root身份执行命令,可用以下命令,将用户添加到sudo附加组中
usermod -G sudo 用户名
- which
/etc/passwd
是用于保存用户信息的文件/usr/bin/passwd
是用于修改用户密码的程序which
命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/ls
which useradd
# 输出
# /usr/sbin/useradd
- bin和sbin
- 在
Linux
中,绝大多数可执行文件都是保存在/bin
、/sbin
、/usr/bin
、/usr/sbin
/bin
(binary
)是二进制执行文件目录,主要用于具体应用/sbin
(system binary
)是系统管理员专用的二进制代码存放目录,主要用于系统管理/usr/bin
(user commands for applications
)后期安装的一些软件/usr/sbin
(super user commands for applications
)超级用户的一些管理程序cd
命令内置在系统内核中,没有独立文件,因此用which
无法找到cd
命令的位置
(3)切换用户
su
不接用户名,可以切换到root
,但是不推荐使用,因为不安全
命令 | 作用 | 说明 |
---|---|---|
su - 用户名 | 切换用户,并且切换目录 | - 可以切换到用户家目录,否则保持位置不变 |
exit | 退出当前登录账户 |
(三)组管理终端命令
- 创建组 / 删除组 的终端命令都需要通过
sudo
执行- 组信息保存在
/etc/group
文件中
命令 | 作用 |
---|---|
groupadd 组名 | 添加组 |
groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
chgrp -R 组名 文件/目录名 | 递归修改文件/目录的所属组 |
(四)修改权限终端命令
命令 | 作用 |
---|---|
chown | 修改拥有者 |
chgrp | 修改组 |
chmod | 修改权限 |
- 命令格式如下:
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名
chmod
设置权限时,可简单使用三个数字分别对应 拥有者 / 组 和 其他 用户的权限
# 直接修改文件|目录的 读|写|执行 权限,但不能精确到 拥有者|组|其他
chmod +/-rwx 文件名|目录名
九、远程管理常用命令
(一)关机/重启
命令 | 对应英文 | 作用 |
---|---|---|
shutdown 选项 时间 | shutdown | 关机/重新启动 |
shutdown
命令可以 安全 关闭 或者 重新启动系统- 不指定选项和参数,默认表示 1 分钟之后 关闭电脑
- 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
# 重新启动系统,now表示现在
$ shutdown -r now
# 立刻关机
$ shutdown now
# 在今天22:00关机
$ shutdown 22:00
# 十分钟后关机
$ shutdown +10
# 取消之前指定的关机计划
$ shutdown -c
(二)查看或配置网卡信息
命令 | 对应英文 | 作用 |
---|---|---|
ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
ping ip地址 | ping | 检测到目标 ip地址 的连接是否正常 |
(1)网卡和IP地址
- 网卡
- 网卡是一个专门负责网络通讯的硬件设备
- IP 地址是设置在网卡上的地址信息
- 把 电脑 比作 电话,网卡 相当于 SIM 卡,IP 地址 相当于 电话号码
- IP地址
- 每台联网的电脑上都有 IP 地址,是保证电脑之间正常通讯的重要设置
- 每台电脑的 IP 地址不能相同,否则会出现 IP 地址冲突,无法正常通讯
(2)ifcofig
ifconfig
可以查看/配置计算机当前的网卡配置信息- 计算机中可能会有一个物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以
ensXX
表示127.0.0.1
被称为 本地回环/环回地址,一般用来测试本机网卡是否正常
# 查看网卡配置信息
$ ifconfig
# 查看网卡对应的IP地址
$ ifconfig | grep inet
(3)ping
ping
一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢ping
的工作原理与潜水艇的声纳相似,ping
这个命令就是取自 声纳的声音- 网络管理员之间也常将
ping
用作动词 —— ping 一下计算机X,看他是否开着- 网络上的机器都有 唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
# 检测到目标主机是否连接正常
$ ping IP地址
# 检测本地网卡是否工作正常
$ ping 127.0.0.1
(三)远程登录和复制文件
命令 | 对应英文 | 作用 |
---|---|---|
ssh 用户名@ip | secure shell | 关机/重新启动 |
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 | secure copy | 远程复制文件 |
(1)ssh
- SSH 客户端是一种使用
Secure Shell(SSH)
协议连接到远程计算机的软件程序SSH
是目前较可靠,专为远程登录会话和其他网络服务 提供安全性的协议
- 利用
SSH 协议
可以有效防止远程管理过程中的信息泄露- 通过
SSH 协议
可以对所有传输的数据进行加密,也能防止 DNS 欺骗和 IP 欺骗SSH
的另一项优点是传输的数据可以压缩,所以可以加快传输速度- 有关 SSH 配置信息都保存在用户家目录下的
.ssh
目录下
1)域名和端口号
- 域名
- 由一串 用点分隔 的名字组成,例如:
www.itcast.cn
- 是 IP 地址 的别名,方便用户记忆
- 端口号
- IP 地址:通过 IP 地址 找到网络上的 计算机
- 端口号:通过 端口号 可以找到 计算机上运行的应用程序
- SSH 服务器 的默认端口号是
22
,如果是默认端口号,在连接的时候,可以省略- 常见服务端口号列表:
服务 | 端口号 |
---|---|
SSH 服务器 | 22 |
Web 服务器 | 80 |
HTTPS | 443 |
FTP 服务器 | 21 |
2)ssh使用
ssh [-p port] user@remote
user
是在远程机器上的用户名,如果不指定的话默认为当前用户remote
是远程机器的地址,可以是 IP/域名,或者是 别名port
是 SSH Server 监听的端口,如果不指定,就为默认值22
- 若SSH 服务器的端口号不是 22,则需要使用
-p
选项,指定正确的端口号,否则无法正常连接到服务器- 使用
exit
退出当前用户的登录
3)免密登录
- 配置公钥
- 执行
ssh-keygen
即可生成 SSH 钥匙,一路回车即可- 上传公钥到服务器
- 执行
ssh-copy-id -p port user@remote
,可以让远程服务器记住我们的公钥- 非对称加密算法
- 使用 公钥 加密的数据,需要使用 私钥 解密
- 使用 私钥 加密的数据,需要使用 公钥 解密
4)配置别名
- 每次都输入
ssh -p port user@remote
,时间久了会很麻烦,特别是当user
,remote
和port
都得输入,而且还不好记忆- 配置别名 可以让我们偷懒,譬如用:
ssh mac
来替代上面一长串,那么就在~/.ssh/config
里面追加以下内容,保存之后,即可用ssh mac
实现远程登录了,scp
同样可以使用
Host mac
HostName ip地址
User yjw1
Port 22
(2)scp
选项 | 含义 |
---|---|
-r | 若源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
-P | 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 |
- scp 就是
secure copy
,是一个在 Linux 下用来进行 远程拷贝文件 的命令- 它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的
-P
而不是小写的
# 把本地当前目录下的 01.py 文件 复制到 远程家目录下的 Desktop/01.py
# 注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py
# 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py
# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop
# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
十、Linux命令速查手册
(一)关机/重启/注销
命令 | 作用 |
---|---|
shutdown -h now | 立刻关机 |
shutdown -h 12:00 | 定时关机 |
shutdown -h +10 | 10分钟后关机 |
shutdown -c | 取消指定关机时间 |
init 0 | 立刻关机 |
telinit 0 | 关机 |
poweroff | 立刻关机 |
halt | 关机 |
shutdown -r now | 立刻重启 |
shutdown -r 12:00 | 定时重启 |
shutdown -r 10 | 10分钟后重启 |
reboot | 重启 |
init 6 | 重启 |
logout | 退出登录shell |
(二)系统信息和性能查看
命令 | 作用 |
---|---|
uname -a | 查看内核/OS/CPU信息 |
uname -r | 查看内核版本 |
uname -m | 查看处理器架构 |
arch | 查看处理器架构 |
hostname | 查看计算机名 |
who | 显示当前登录用户 |
who am i | 显示登录时的用户名 |
whoami | 显示当前用户名 |
cat /proc/version | 查看linux版本信息 |
cat /proc/cpuinfo | 查看cpu信息 |
cat /proc/interrupts | 查看中断 |
cat /proc/loadavg | 查看系统负载 |
uptime | 查看系统运行时间、用户数、负载 |
env | 查看系统环境变量 |
lsusb -tv | 查看系统USB设备信息 |
lspci -tv | 查看系统PCI设备信息 |
lsmod | 查看已加载的系统模块 |
grep MemTotal /proc/meminfo | 查看内存总量 |
grep MemFree /proc/meminfo | 查看空闲内存量 |
free -m | 查看内存用量和交换区用量 |
date | 显示系统日期时间 |
cal 2021 | 显示2021年日历表 |
top | 动态显示cpu/内存/进程等情况 |
vmstat 1 20 | 采集系统状态(1秒一次,共20次) |
iostat | 查看io读写/cpu使用情况 |
sar -u 1 10 | 查询cpu使用情况(1秒一次,共10次) |
sar -d 1 10 | 查询磁盘性能 |
(三)磁盘和分区
命令 | 作用 |
---|---|
fdisk -l | 查看所有磁盘分区 |
swapon -s | 查看所有交换分区 |
df -h | 查看磁盘使用情况及挂载点 |
du -sh /dir | 查看指定某个目录的大小 |
mount /dev/hda2 /mnt/hda2 | 挂载hda2盘 |
mount -t ntfs /dev/sdc1 /mnt/usbhd1 | 指定文件系统类型挂载(ntfs) |
mount -o loop xxx.iso /mnt/cdrom | 挂载iso文件 |
mount /dev/sda1 /mnt/usbdisk | 挂载usb盘/闪存设备 |
umount -v /dev/sda1 | 通过设备名卸载 |
umount -v /mnt/mymnt | 通过挂载点卸载 |
fuser -km /mnt/hda1 | 强制卸载(慎用) |
(四)用户和用户组
命令 | 作用 |
---|---|
useradd yjw | 创建yjw用户 |
userdel -r yjw | 删除yjw用户 |
usermod -g group_name user_name | 修改用户的组 |
usermod -aG group_name user_name | 将用户添加到组 |
groups yjw | 查看yjw用户所在组 |
groupadd group_name | 创建用户组 |
groupdel group_name | 删除用户组 |
groupmod -n new_name old_name | 重命名用户组 |
su - user_name | 完整切换到一个用户环境 |
passwd | 修改口令 |
passwd yjw | 修改yjw用户口令 |
w | 查看活动用户 |
id yjw | 查看yjw用户信息 |
last | 查看用户登录日志 |
crontab -l | 查看当前用户的计划任务 |
cut -d: -f1 /etc/passwd | 查看系统所有用户 |
cut -d: -f1 /etc/group | 查看系统所有组 |
(五)网络和进程管理
命令 | 作用 |
---|---|
ifconfig | 查看网络接口属性 |
ifconfig eth0 | 查看某网卡的配置 |
route -n | 查看路由表 |
netstat -lntp | 查看所有监听端口 |
netstat -antp | 查看已经建立的TCP连接 |
netstat -lutp | 查看TCP/UDP的状态信息 |
ifup eth0 | 启用eth0网络设备 |
ifdown eth0 | 禁用eth0网络设备 |
iptables -L | 查看iptables规则 |
dhclient eth0 | 以dhcp模式启用eth0 |
route add -net 0/0 gw Gateway_IP | 配置默认网关 |
route del 0/0 gw Gateway_IP | 删除静态路由 |
(六)系统服务
命令 | 作用 |
---|---|
chkconfig --list | 列出系统服务 |
service <服务名> status | 查看某个服务 |
systemctl status <服务名> | 查看某个服务 |
service <服务名> start | 启动某个服务 |
systemctl start <服务名> | 启动某个服务 |
service <服务名> stop | 终止某个服务 |
systemctl stop <服务名> | 终止某个服务 |
service <服务名> restart | 重启某个服务 |
systemctl enable <服务名> | 开启自启动 |
systemctl disable <服务名> | 关闭自启动 |
(七)文件和目录
命令 | 作用 |
---|---|
cd <目录名> | 进入某个目录 |
cd … | 返回上级目录 |
cd …/… | 返回上两级目录 |
cd | 进个人主目录 |
cd - | 返回上⼀步所在目录 |
pwd | 显示当前路径 |
ls | 查看文件目录列表 |
ls -l | 查看文件和目录的详情列表 |
ls -a | 查看隐藏文件 |
ls -lh | 查看文件和目录的详情列表(更易读) |
ls -lSr | 查看文件和目录列表(以文件大小升序) |
tree | 查看文件和目录的树形结构 |
mkdir <目录名> | 创建目录 |
mkdir dir1 dir2 | 同时创建两个目录 |
rm -f file1 | 删除’file1’文件 |
rmdir dir1 | 删除’dir1’目录 |
rm -rf dir1 | 删除’dir1’目录及其内容 |
rm -rf dir1 dir2 | 同时删除两个目录及其内容 |
mv old_dir new_dir | 重命名/移动目录 |
cp file1 file2 | 复制文件 |
cp dir/* . | 复制某目录下的所有文件至当前目录 |
ln -s file1 link1 | 创建指向文件/目录的软链接 |
ln file1 lnk1 | 创建指向文件/目录的硬链接 |
cat file1 | 查看文件内容 |
cat -n file1 | 查看内容并标示行数 |
tac file1 | 从最后一行开始反看文件内容 |
more file1 | 查看⼀个长文件的内容 |
less file1 | 反看长文件内容 |
head -2 file1 | 查看文件前两行 |
tail -2 file1 | 查看文件后两行 |
grep yjw 1.txt | 在1.txt文件查找yjw关键词 |
(八)打包和解压
命令 | 作用 |
---|---|
zip xxx.zip file | 将文件压缩至zip包 |
zip -r xxx.zip file1 file2 dir1 | 将多个文件+目录压成zip包 |
unzip xxx.zip | 解压zip包 |
tar -cvf xxx.tar file | 创建非压缩tar包 |
tar -cvf xxx.tar file1 file2 dir1 | 将多个⽂件+目录打tar包 |
tar -tf xxx.tar | 查看tar包的内容 |
tar -xvf xxx.tar | 解压tar包 |
tar -xvf xxx.tar -C /dir | 将tar包解压至指定目录 |
tar -jcvf xxx.tar.bz2 dir | 创建bz2压缩包 |
tar -jxvf xxx.tar.bz2 | 解压bz2压缩包 |
tar -zcvf xxx.tar.gz dir | 创建gzip压缩包 |
tar -zxvf xxx.tar.gz | 解压gzip压缩包 |
bunzip2 xxx.bz2 | 解压bz2压缩包 |
bzip2 file | 压缩文件 |
gunzip xxx.gz | 解压gzip压缩包 |
gzip file | 压缩⽂件 |
gzip -9 file | 最大程度压缩 |
(九)rpm包管理
命令 | 作用 |
---|---|
rpm -qa | 查看已安装的rpm包 |
rpm -q pkg_name | 查询某个rpm包 |
rpm -q --whatprovides xxx | 显示xxx功能是由哪个包提供的 |
rpm -q --whatrequires xxx | 显示xxx功能被哪个程序包依赖的 |
rpm -q --changelog xxx | 显示xxx包的更改记录 |
rpm -qi pkg_name | 查看⼀个包的详细信息 |
rpm -qd pkg_name | 查询⼀个包所提供的文档 |
rpm -qc pkg_name | 查看已安装rpm包提供的配置文件 |
rpm -ql pkg_name | 查看⼀个包安装了哪些文件 |
rpm -qf filename | 查看某个文件属于哪个包 |
rpm -qR pkg_name | 查询包的依赖关系 |
rpm -ivh xxx.rpm | 安装rpm包 |
rpm -ivh --test xxx.rpm | 测试安装rpm包 |
rpm -ivh --nodeps xxx.rpm | 安装rpm包时忽略依赖关系 |
rpm -e xxx | 卸载程序包 |
rpm -Fvh pkg_nam | 升级确定已安装的rpm包 |
rpm -Uvh pkg_name | 升级rpm包(若未安装则会安装) |
rpm -V pkg_name | RPM包详细信息校验 |
(十)yum包管理
命令 | 作用 |
---|---|
yum repolist enabled | 显示可用的源仓库 |
yum search pkg_name | 搜索软件包 |
yum install pkg_name | 下载并安装软件包 |
yum install --downloadonly pkg_name | 只下载不安装 |
yum list | 显示所有程序包 |
yum list installed | 查看当前系统已安装包 |
yum list updates | 查看可以更新的包列表 |
yum check-update | 查看可升级的软件包 |
yum update | 更新所有软件包 |
yum update pkg_name | 升级指定软件包 |
yum deplist pkg_name | 列出软件包依赖关系 |
yum remove pkg_name | 删除软件包 |
yum clean all | 清除缓存 |
yum clean packages | 清除缓存的软件包 |
(十一)dpkg包管理
命令 | 作用 |
---|---|
dpkg -c xxx.deb | 列出deb包的内容 |
dpkg -i xxx.deb | 安装/更新deb包 |
dpkg -r pkg_name | 移除deb包 |
dpkg -P pkg_name | 移除deb包(不保留配置) |
dpkg -l | 查看系统中已安装deb包 |
dpkg -l pkg_name | 显示包的大致信息 |
dpkg -L pkg_name | 查看deb包安装的文件 |
dpkg -s pkg_name | 查看包的详细信息 |
dpkg –unpack xxx.deb | 解开deb包的内容 |
(十二)apt工具
命令 | 作用 |
---|---|
apt-cache search pkg_name | 搜索程序包 |
apt-cache show pkg_name | 获取包的概览信息 |
apt-get install pkg_name | 安装/升级软件包 |
apt-get purge pkg_name | 卸载软件(包括配置) |
apt-get remove pkg_name | 卸载软件(不包括配置) |
apt-get update | 更新包索引信息 |
apt-get upgrade | 更新已安装软件包 |
apt-get clean | 清理缓存 |