此篇文章为近期整理的Linux基础内容,较多较杂,阅读可能会稍微花费一点时间
。
前九章相关文字叙述较多,第十章为上百条命令的汇总,有需要可直接移至文末。
一、操作系统
(一)操作系统的含义
- Operation System, OS
- 没有安装操作系统的计算机,通常被称为裸机
- 如果想在裸机上运行编写的程序,就必须使用机器语言书写程序
- 如果在计算机上安装操作系统,就可以在操作系统上安装支持的高级语言环境,从而用更易编写的高级语言开发程序
(二)操作系统的作用
- 是现代计算机系统中 最基本和最重要 的系统软件
- 是 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
- 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,便于使用
- 其他的诸如编译程序、数据库管理系统,以及大量应用软件,都直接依赖于操作系统的支持
(三)主流操作系统
- 桌面操作系统
- 服务器操作系统
- 嵌入式操作系统
- 移动设备操作系统
(1)桌面操作系统
- Windows
用户群体大,应用软件丰富
- macOS
适合开发人员
(2)服务器操作系统
- Linux
安全、稳定、免费
占有率高
- Windows Server
付费
占有率低
(3)嵌入式操作系统
(4)移动设备操作系统
(四)虚拟机
虚拟机(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
(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 组 新建用户名
|
添加新用户
|
- -m 自动建立用户家目录
- -g 指定用户所在的组,否则会建立一个和同名的组
|
passwd 用户名
|
设置用户密码
|
如果是普通用户,直接用 passwd 可以修改自己的账户密码
|
userdel -r 用户名
|
删除用户
|
-r 选项会自动删除用户家目录
|
cat /etc/passwd | grep 用户名
|
确认用户信息
|
新建用户后,用户信息会保存在 /etc/passwd 文件中
|
(2)查看用户信息
命令
|
作用
|
id [用户名]
|
查看用户 UID 和 GID 信息
|
who
|
查看当前所有登录的用户列表
|
whoami
|
查看当前登录用户的账户名
|
/etc/passwd
文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地帐号
- 家目录
- 登录使用的 Shell,就是登录之后,使用的终端命令,
ubuntu
默认是 dash
usermod
可以用来设置 用户 的 主组 / 附加组 和 登录 Shell,命令格式如下:
- 主组:通常在新建用户时指定,在
etc/passwd
的第 4 列 GID 对应的组
- 附加组:在
etc/group
中最后一列表示该组的用户列表,用于指定 用户的附加权限
- 设置了用户的附加组之后,需要重新登录才能生效
# 修改用户的主组(passwd中的 GID)usermod -g 组 用户名# 修改用户的附加组usermod -G 组 用户名# 修改用户登录shellusermod -s /bin/bash 用户名# 默认使用useradd添加的用户没有权限使用sudo以root身份执行命令,可用以下命令,将用户添加到sudo附加组中usermod -G sudo 用户名
/etc/passwd
是用于保存用户信息的文件
/usr/bin/passwd
是用于修改用户密码的程序
which
命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/lswhich useradd
# 输出
# /usr/sbin/useradd
- 在
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 macHostName ip地址User yjw1Port 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
|
清理缓存
|
❥呕心沥血系列❥-- Linux基础相关推荐
- linux基础试卷笔试,顽石系列:Linux基础笔试
顽石系列:Linux基础笔试 系统操作 压缩文件 扩展名压缩程序 *.Z compress *.zip zip *.gz gzip *.bz2 bzip2 *.xz xz *.tar tar 程序打包 ...
- SLAM导航机器人零基础实战系列:(一)Linux基础——2.安装Linux发行版ubuntu系统
SLAM导航机器人零基础实战系列:(一)Linux基础--2.安装Linux发行版ubuntu系统 摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以 ...
- 2017年Linux基础进阶系列课-老男孩-专题视频课程
2017年Linux基础进阶系列课-13877人已学习 课程介绍 本套课程讲解的重要知识点如下: Linux文件属性体系精讲 .Linux正则表达式及grep命令深度讲解.三剑客sed ...
- 【Linux系列】Linux基础知识整理
Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...
- 生物信息入门之 linux,手把手教你学生信系列(三)-- Linux 基础入门拦路虎
原本计划这一篇介绍基础命令的,然后我们微课学院之前已经有相关录制好的视频,而且网上的相关文章多不胜数,因此也就不在卖弄了,简单交流一下 Linux 入门过程中的几个拦路虎,具体命令等在后文具体与到时候 ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...
本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础
本节书摘来异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者:华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- Linux基础知识题解答(一)
题目来自老男孩BLOG:http://oldboy.blog.51cto.com/2561410/1709569,比较适合新手,空余的时候做一下,可以巩固Linux基础知识,有不对的地方欢迎指正. 计 ...
- Linux基础二(挂载、关机重启与系统等级)
一.Linux 基础之挂载 1. 挂载和查询 1.1 挂载 什么叫挂载?装系统的时候要给硬盘分区,在 Windows 中要分 C 盘 D 盘 DEF 盘,这个操作我们叫做分配盘符,分配盘符之后我们就可 ...
- 大数据成长之路:谈谈那些必须学习的Linux基础知识
作者| Roy瑞士 责编| Carol 封图| CSDN│下载于视觉中国 这里主要介绍学习大数据过程中用到的Linux基础知识,现在主攻的方向是大数据开发,欢迎大家共同交流. 环境 推荐安装VMwar ...
最新文章
- 项目实践|如何在较暗环境进行人脸检测?
- N分类模型评估计算方法
- GC分析工具使用-gceacy分析堆栈
- 沙漠之旅(二维dp)
- “前”方有坑,绕道而行(一)-- H5 CSS
- python处理csv文件将id相同的行合并到同一行并用符号将其隔开_Python探索性数据分析,这样才容易掌握...
- Linux——系统引导流程学习简单笔记
- 【SQL】INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
- 大数据表转移hdfs后查询处理
- python pop3_Python使用POP3和SMTP协议收发邮件
- 解决软件开发中常见的问题
- 《历史是个什么玩意儿》袁腾飞最新语录
- 【控制篇 / 应用】(5.6) ❀ 01. NGFW 模式下使用应用控制 ❀ FortiGate 防火墙
- DNS云学堂 | 三分钟了解,最近大火的DOH与HTTPDNS、DOT的异同
- 认识世界的基础——系统概述-1
- 大数据 SAP HANA一体机选购指南
- SuperMap三维数据处理中关于模型高程修改方法
- 如何用 git 去下载相应的资源
- OpenCV实现“全能扫描王”的图像矫正功能
- PHP画像素直线,画像素画原来如此简单!绝对是手残党的福利
热门文章
- linux清空临时文件命令,Linux系统下临时文件TMP清理 ( tmpwatch 命令)
- Zabbix 5.0 配置短信报警
- android游戏地图编辑器
- Trimmed 稳健均值估计与 中位数-中位数配对偏差法估计标准差——理论与 Python 实现
- signature=9aadee6a3f882c84134bf5f6f04d2c93,Fw: Updated Scor Input Requirements
- mysql导入时区_【MySQL】将时区信息导入MYSQL
- php amr mp3,php实现微信语音amr文件在线播放方法
- 4种文件扩展名被阻止时发送邮件附件的方法
- 指纹识别综述(9): 指纹系统安全
- 100+CAD常用机械零件图练习图限量获取