Linux是什么
- 是一个操作系统(OS)
李纳斯·托瓦兹
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少 |
安装
创建一个虚拟机
然后就是点击下一步就好
打开系统
目录用途
/bin:
是Binary的缩写,这个目录存放着最经常使用的命令。- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/home:
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/root:
该目录为系统管理员,也称作超级权限者的用户主目录。- /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /etc:所有的系统管理所需要的配置文件和子目录my.conf。
/usr/local
:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。/boot:
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
- /srv:service的缩写,该目录存放一些服务启动之后需要提供的数据。
- /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。
- /tmp:这个目录是用来存放一些临时文件的。
- /dev:类似windows的设备管理器,把所有的硬件用文件的形式存储。
/media:
linux系统会自动识别一些设备,例如U盘光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。/opt:
这是给主机额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录下。默认为空。- /usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序。
/var:
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。- /selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件。
总结
- Linux的目录中有且只有一个根目录。
- Linux的各个目录存放的内容是规划好,不用乱放文件。
- Linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件。
- Linux的各个文件目录下存放什么内容,必须有一个认识。
VIM编辑器
VI是Unix系统和类Unix系统中最通用的文本编辑器。
三种模式
正常模式:vim xxx进去之后看到的页面就是正常模式,不能直接编辑文本,主要操作是:**删除、复制、粘贴,**在正常模式下使用u是撤回操作
编辑模式:在一般模式下使用i、a或b,进入编辑模式,主要操作:编辑文本
命令模式:在一般模式下使用**:或者/,然后进行命令操作,:wq、:q:退出、:ql、:w:保存**
退出编辑模式、命令模式,回到正常模式:ESC
退出VI/VIM编辑器:****:q
切换输入法:super(windows)+空格
:set nu :显示行号
:set nonu:去除行号显示
正常模式
-
用户刚刚启动 vi/vim,便进入了正常模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
插入/编辑模式
-
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
命令行模式
-
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
总结Vim 的常见指令
- yy:复制光标当前一行
- 5yy:拷贝当前5行
- p:箭头移动到目的行粘贴
- u:撤销上一步
- dd:删除当前行
- 5dd:删除当前行向下的5行
- x:剪切一个字母,相当于del
- X:剪切一个字母,相当于退格键
- yw:复制一个词
- dw:删除一个词
- 在文件中查找某个单词:命令行输入 /(查找内容),按n查找下一个
- 设置文件行号:set nu,取消文件行号:set nonu
- 编辑文件,正常模式下使用快捷键到达文档最末行:G,最首行:gg
- 编辑文件,光标移动到某行:shift+g
- 显示行号:set nu
- 输入行号这个数
- 输入shift+g
- w:向前移动一个单词(光标停在单词首部)
- b:向后移动一个单词 2b 向后移动2个单词
插入命令
指令 | 说明 |
---|---|
i | 在当前位置生前插入 |
I | 在当前行首插入 |
a | 在当前位置后插入 |
A | 在当前行尾插入 |
o | 在当前行之后插入一行 |
O | 在当前行之前插入一行 |
游标移动
指令 | 说明 |
---|---|
gg | 移动到文件头。 = [[ |
G(shift + g) | 移动到文件尾。 = ]] |
行數 → G | 移動到第 n 行 |
冒号+行号,回车 | 比如跳到240行就是 :240回车 |
h | 左移一个字符 |
l | 右移一个字符,这个命令很少用,一般用w代替。 |
k | 上移一个字符 |
j | 下移一个字符 |
w | 向前移动一个单词(光标停在单词首部) |
b | 向后移动一个单词 2b 向后移动2个单词 |
e | 同w,只不过是光标停在单词尾部 |
ge | 同b,光标停在单词尾部。 |
^ | 移动到本行第一个非空白字符上。 |
0 | 移动到本行第一个字符上 |
HOME | 移动到本行第一个字符。同0健。 |
$ | 移动到行尾 3$ 移动到下面3行的行尾 |
f(find) | fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。 |
F | 同f,反向查找 |
撤销和重做
指令 | 说明 |
---|---|
u | 撤销(Undo) |
U | 撤销对整行的操作 |
Ctrl + r | 重做(Redo),即撤销的撤销。 |
删除命令
指令 | 说明 |
---|---|
x | 删除当前字符 |
3x | 删除当前光标开始向后三个字符 |
X | 删除当前字符的前一个字符。X=dh |
dl | 删除当前字符, dl=x |
dh | 删除前一个字符 |
dd | 删除当前行 |
dj | 删除上一行 |
dk | 删除下一行 |
10d | 删除当前行开始的10行。 |
D | 删除当前字符至行尾。D=d$ |
d$ | 删除当前字符之后的所有字符(本行) |
kdgg | 删除当前行之前所有行(不包括当前行) |
jdG(jd shift + g) | 删除当前行之后所有行(不包括当前行) |
:1,10d | 删除1-10行 |
:11,$d | 删除11行及以后所有的行 |
:1,$d | 删除所有行 |
J(shift + j) | 删除两行之间的空行,实际上是合并两行。 |
拷贝,剪贴和粘贴
指令 | 说明 |
---|---|
yy | 拷贝当前行 |
nyy | 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。 |
p | 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。 |
shift+p | 在当前行前粘贴 |
:1,10 co 20 | 将1-10行插入到第20行之后。 |
:1,$ co $ | 将整个文件复制一份并添加到文件尾部。 |
ddp | 交换当前行和其下一行 |
xp | 交换当前字符和其后一个字符 |
ndd | 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴 |
:1,10d | 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。 |
:1, 10 m 20 | 将第1-10行移动到第20行之后。 |
正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制
退出命令
指令 | 说明 |
---|---|
:wq | 保存并退出 |
ZZ | 保存并退出 |
:q! | 强制退出并忽略所有更改 |
:e! | 放弃所有修改,并打开原来文件。 |
:q | 未修改直接退出 |
网络配置
Bridged(桥接模式)
桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关DNS需要与主机网卡一致。其网络结构如下图所示:
点击“网络适配器”,选择“桥接模式”,然后“确定”
在进入系统之前,我们先确认一下主机的ip地址、网关、DNS等信息。
然后,进入系统编辑网卡配置文件,在终端输入命令vim /etc/sysconfig/network-scripts/ifcfg-eth0
编辑完成,保存退出,然后重启虚拟机网卡,使用ping命令ping外网ip,测试能否联网。
NAT(地址转换模式)
虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换,虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机。
Host-Only(仅主机模式)
虚拟机只与主机共享一个专用网络,与外部网络无法通信。
重启网络服务:service network restart
修改 IP 地址后可能会遇到的问题
(1)物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的 防火墙问题,把防火墙关闭就行
(2)虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有 问题
(3)虚拟机 Ping www.baidu.com显示域名未知等信息,一般查看 GATEWAY 和 DNS 设 置是否正确
(4)如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
- systemctl stop NetworkManager 关闭
- systemctl disable NetworkManager 禁用
(5)如果检查发现 systemctl status network 有问题 需要检查 ifcfg-ens160
配置主机名
修改主机名称
hostname
(功能描述:查看当前服务器的主机名称)
如果感觉此主机名不合适,我们可以进行修改。通过编辑vim /etc/hostname
文文件
修改完成后重启生效。
如果想立即生效可以通过
hostnamectl set-hostname dselegent-study【要修改的主机名】
这个命令,然后重启终端就可以看到效果了
修改 hosts 映射文件
1)修改 linux 的主机映射文件(hosts 文件) 后续在 hadoop 阶段,虚拟机会比较多,配置时通常会采用主机名的方式配置, 比较简单方便。 不用刻意记 ip 地址。vim /etc/host
添加如下内容
192.168.2.100 ds100
192.168.2.101 ds101
192.168.2.102 ds102
192.168.2.103 ds103
192.168.2.104 ds104
192.168.2.105 ds105
重启设备,重启后,查看主机名,已经修改成功
2)修改 windows 的主机映射文件(hosts 文件)
进入 C:\Windows\System32\drivers\etc
路径
打开 hosts 文件并添加如下内容
192.168.2.100 ds100
192.168.2.101 ds101
192.168.2.102 ds102
192.168.2.103 ds103
192.168.2.104 ds104
192.168.2.105 ds105
先将该文件只读关闭,然后写入内容保存,最后恢复到只读状态
这时可以在windows通过ping ds100
来测试是否连通虚拟机
远程登录
通常在工作过程中,公司中使用的真实服务器或者是云服务器,都不允许除运维人员之 外的员工直接接触,因此就需要通过远程登录的方式来操作。所以,远程登录工具就是必不 可缺的,目前,比较主流的有 Xshell,SSH Secure Shell,SecureCRT,FinalShell 等,同学们 可以根据自己的习惯自行选择,以下以 Xshell5 为例。
系统管理
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一只存在、常驻内存的进程,一般被称作“服务”(service)。
实操篇
帮助命令
man
用来显示某个命令的文档信息。比如:man ls
info
你可以认为和man是一样的,虽然有一些能够互补的内容。它们会在内容中进行提示的--help
很多命令通过参数--help
提供非常简短的帮助信息。这通常是最有用最快捷的用例展示。如果你根本就记不住一个非常拗口的单词,那就找找这些地方吧
注意:这些帮助信息,仅集中在命令的作用域本身。对于它的组合使用场景,并没有过多信息。也就是说,它教会了你怎么用,但并没有告诉你用它能够来做什么。
TAB补全
现在,在终端里,输入
ca
,然后快速按2次<TAB>
键盘,命令行会进入补全模式,显示以ca打头的所有命令。[root@localhost ~]# ca cacertdir_rehash cache_dump cache_repair cache_writeback ca-legacy capsh case catchsegv cache_check cache_metadata_size cache_restore cal caller captoinfo cat catman
如果你对某个命令,只有模糊的印象,只记得前面的几个字母,这个功能是极好的,命令范围会一步步缩减。
常用快捷键
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl + l | 清屏,等同于clear;彻底清屏是: reset |
tab | 提示(更重要的是可以防止敲错) |
上下键 | 查找执行过的命令 |
文件目录类
pwd显示当前工作目录的绝对路径
pwd: print working directory 打印工作目录
基础语法: pwd (显示当前工作目录的绝对路径)
ls 列出目录的内容
ls: list 列出目录内容
1)基本语法
ls [选项] [文件或目录]
- 选项说明
选项 | 功能 |
---|---|
-a | 全部的文件,连同隐藏文档(开头为.的文件) 一起 |
-l | 长数据串列出,包含文件的属性与权限等等数据(常用)等价于“ll” |
-lh | 文件大小比较好看 |
3)显示说明
每行列出的信息依次是:文件类型与权限 链接户 文件属性 文件大小用byte来标识 建立或最近修改的时间 名字
cd 切换目录
cd Change Directory 切换目录
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd ~ 或 cd | 回到自己的家目录 |
cd - | 回到上一次所在目录 |
cd … | 回到当前目录的上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式路径 |
mkdir创建一个新的目录
# 创建目录 mkdir a
# 一次创建多级
mkdir a a/b a/b/c
mkdir -p a/b/c
rmdir删除一个空的目录
# 删除目录 rmdir a
# 删除多级目录
rmdir a/b/c
创建空文件
1) 基本语法
touch 文件名称
cp复制文件或目录
rm 删除文件或目录
rm [选项] deleteFile 递归删除目录中所有内从
选项 | 功能 |
---|---|
-r | 递归删除目录中所有内容 |
-f | 强制执行删除操作,而不提示用于进行确认 |
-v | 显示指令的详细执行过程 |
mv 移动文件或目录或重命名
mv oldNameFile newNameFile 重命名
mv /tmp/moveFile /targerFolder 移动文件
cat 查看文件内容
cat [选项] 要查看的文件
cat -n 文件名 显示所有行的行号,包括空行
more 文件内容分屏查看器
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置若干快捷键
操作 | 功能说 |
---|---|
空白键(space) | 代表向下翻一页 |
Enter | 代表向下翻一行 |
q | 立刻离开 more |
ctrl + F | 向下滚动一屏 |
ctrl + B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行行号 |
less 分屏显示文件内容 (查看大文件)
less指令永爱分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
less 文件名
1
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页 |
pagedown | 向下翻动一页 |
pageup | 向上翻动一页 |
/字符串 | 向下搜寻【字符串】的功能:n:向下查找 N:向上查找 |
?字符串 | 向上搜寻【字符串】的功能:n 向上查找 N 向下查找 |
q | 离开less这个程序 |
echo
echo 输出内容到控制台
echo 【选项】【输出内容】
-e: 支持反斜线控制的字符转换
控制字符 | 作业 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是Tab键 |
查看系统环境变量
echo $ + Tab键
head 显示文件头部内容
head用于显示文件的开头部门内容,默认情况下 head指令显示文件的前10行内容。
1)基本语法
head 文件名 查看文件头10行内容
head -n 5 文件 查看文件头5行内容
tail 输出文件尾部
tail -n 5 文件名
tail -f 文件
- 按Ctrl + S 可以暂停监听
- 按Ctrl + Q 可以继续监听
查看文件索引
ls -i web.log
输出重定向和 >> 追加
- ls -l > a.txt (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
- ls -al >> aa.txt (功能描述:列表的内容追加到文件 aa.txt 的末尾)
- cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
- echo “内容” >> 文件
ln 软连接
软连接(link)也称为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了连接其他文件的路径
创建软连接
[root@lys logs]# ln -s web.log web
[root@lys logs]# ll
total 7988
-rw-r--r-- 1 root root 115498 May 13 11:04 gateway.log
lrwxrwxrwx 1 root root 7 May 16 00:36 web -> web.log # 软连接的前缀为l
-rw-r--r-- 1 root root 8048944 May 16 00:36 web.log
123456
直接进入软连接对应的地址
cd -P 软连接
1
删除软连接: rm -rf 软连接名,而不是rm -rf 软连接名/
!!! 如果使用rm -rf 软连接/ 删除,会把软连接对应的真实目录下内容删掉
硬连接 (相当于)
ln 文件名 链接名
history 查看已经执行过历史命令
# 查看历史命令
history
# 情况历史命令
history -c
时间日期类
- 基本语法
date [option] + [format]
date -s 日期时间 设置日期时间
date + “日期时间格式” 指定显示时使用的日期
date显示当前时间
- date
- date + %Y
- date + %m
- date + %d
- date “+%Y-%m-%d %H:%m:%S”
- date +%Y-%m-%d %H:%m:%S
- date +%s 查看时间戳
- date -d “-1 hours ago” 一个小时后的时间
设置系统当前时间
date -s "2022-06-19 20:52:22"
1
同步时间
ntpdate -u ntp1.aliyun.com
cal查看日历
cal [选项] 不加选项,显示本月日历
- cal -3 查看3个月的时间
- cal -m 周一放在第一天
- cal 2022 查看2022年日历
- cal 查看本年度日历
用户管理命令
# useradd 用户名 添加新用户
useradd lys
# 可以在home目录看到创建的用户文件夹
cd /home
# 创建时修改主文件夹名称
useradd -d /home/dave david
# 设置密码
passwd lys# 查看用户信息,可以验证是否存在
id lys
uid=1005(lys) gid=1005(lys) groups=1005(lys)# 查看系统用户
less /etc/passwd# 切换用户 su: switch user
su lys
# 在lys用户退出可回到root用户
exit# 查看当前用户
who am i# 删除用户
userdel lys
# 删除用户以及文件夹
userdel -r lys# sudo设置普通用户具有root权限
vim /etc/sudoers
# 添加
lys ALL=(ALL) ALL
# 使用超级管理员权限
sudo lys
# 将用户添加入某个组
usermod -g 组名 用户名
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规则有所不同,
如Linux下的用户属于与它同名的用户组,这个用户在和创建用户时同时创建。
用户组的管理设计用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
# 新增组
groupadd 组名# 修改组名
groupmod -n 新组名 旧组名# 删除用户组
groupdel 组名
文件权限类
文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll 或者ls -l来显示一个文件的属性以及文件所属的用户和组
- 从左到有的10个字符标识
(1)0首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件
- - 代表文件
- d 代表目录
- l 链接文档 (link file)
(2) 第1-3位确定属主(该文件的所有者)拥有该文件的权限。User
(3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限。Group
(4) 第7-9位确定其他用户拥有该文件的权限 Other
-
rwx作用文件和目录的不同解释
作用到文件:
【r】: 代表可读(read) 可以读取,查看
【w】:代表可写(write) 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
【x】:代表可执行(execute) 可以被系统执行
作用到目录:
【r】: 代表可读(read) 可以读取,ls查看目录内容
【w】:代表可写(write) 可以修改,目录内创建+删除+重命名目录
【x】:代表可执行(execute) 可以进入该目录
(1)如果查看到是文件:链接数指的是硬链接个数。
(2)如果查看的是文件夹:链接数指的是子文件夹个数。
chmod 改变权限
示例
# 增加执行权限
chmod +x nginx.conf# chmod [u|g|o|a] +-= {rwx} 文件或目录
chmod u+x nginx.conf
chmod u-x nginx.conf
chmod u=x nginx.conf
chmod a+x nginx.conf
chmod a=rwx nginx.conf# r=4 w=2 x=1
# 直接用数字修改权限
chmod 777 nginx.conf# 修改整个文件夹的所有这,所属组,其他用户都具有可读可写可执行权限
chmod -R 777 nginx.conf
chown 改变所有者
chown 改变所有者
chown [选项] [最终用户] [文件或目录]
chown lys a.txt
# 获取递归改变文件所有者和所有组
chown -R lys dir
charp 改变所有组
chgrp [最终用户组] [文件或目录]
chgrp root a.txt
搜索查找类
find 查找文件或目录
find 指令将从指定目录向下递归地遍历其各个子目录
find [搜索范围] [选项]
选项 | 功能 |
---|---|
-name 查询方式 | 按照指定文件名查找模式查找文件 |
-user 用户名 | 查找属于指定用户名所有文件 |
-size 文件大小 | 按照指定文件大小查找文件,单位为 b-块 (512字节) c- 字节 w-字 2字节 k - 千字节 M -兆字节 G-吉字节 |
# 按名称查找
find -name nginx.conf# 按路径加名称查找
find /root -name nginx.conf# 按照后缀查找
find -name ".cfg"# 按用户查找
find -user lys# 按大小查找 +大于 -小于
find -size +1M
find -size +1M
locate 快速定位文件路径
local指令利用事先简历的系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时时刻。
locate 搜索文件
由于locate指令基于数据库进行查询,所以第一此运行前,必须使用updatedb指令创建locate数据库
updatedb
locate nginx.conf
# 查看指令所在位置
which ls
whereis locate
grep过滤查找及"|"管道符
管道符,|,表示将前一个命令的处理结果输出传递给后面的命令处理
grep 选项 查找内容 源文件
- -n 显示匹配行及行号
# 显示location在nginx.conf的哪几行
grep -n location nginx.conf
# 查找某文件在该目录的第一个
ls | grep -n test
wc 查看单词数量
wc nginx.conf
136 302 3022 nginx.conf
行数 单词数量 字节数
压缩和压缩类
gzip/gunip 压缩
gzip 文件
gunzip 文件.gz (解压缩文件命令)
- 只能压缩文件不能压缩目录
- 不保留原来的文件
- 同时多个文件会产生多个压缩包
示例
gzip nginx.conf
gunzip nginx.conf
gzip nginx.conf nginx.conf2
zip/unzip压缩
zip压缩命令在window/linux都通用,可以压缩目录且保留源文件
zip [选项] XXX.zip 压缩文件和目录命令
unzip [选项] XXX.zip 解压缩文件
- zip -r 压缩目录
- unzip -d 指定解压后文件的存放目录
# 将logs压缩成logs.zip
zip -r logs.zip logs/# 解压logs.zip
unzip -d ./tmp logs.zip
tar打包
tar [选项] XXX.tar.gz 打包目录,压缩后的文件格式 .tar.gz
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 执行压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压.tar文件 |
-C | 解压到指定目录 |
# 压缩单个文件
tar -zcvf nginx.tar.gz nginx.conf
# 压缩多个文件
tar -zcvf nginx.tar.gz nginx.conf nginx.conf2
# 解压文件
mkdir tmp
tar -zxvf nginx.tar.gz -C tmp/
磁盘查看和分区类
du 查看文件和目录占用的磁盘空间
du: disk usage 磁盘占用情况
du 目录/文件 显示目录下每个子目录的磁盘使用情况
选项 | 功能 |
---|---|
-h | 以人们较易预读的G,M、k等格式自行显示 |
-a | 不进查看子目录大小,还要包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
-max-depth=n | 指定统计子目录的深度为第nc层 |
tree 工具
示例
查看当前用户主目录占用的磁盘空间大小
du -sh # 查看当前路径文件大小
# 子查看一级子目录
du --max-depth=1 -ah
df查看磁盘空间使用情况
df: disk free 空余磁盘
df 选项 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
df -h 以人们较阅读的格式自行显示
lsblk 查看设备挂载情况
- lsblk
- lsblk -f 查看详细的设备故障情况,显示文件系统信息
mount/umount 挂载/卸载
对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部门,它在用一种叫挂载的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个文件将它的存储空间在这个目录获得,
mount [-t vfstype] [-o options] device dir (功能描述:挂载设备)
umount 设备文件名或挂载点 (功能描述:卸载设备)
参数 | 功能 |
---|---|
-t vfstype | 指定文件系统的类型,通常不必指定。mount会自动选择类型。常用类型有:光盘或光盘镜像 DOS Windows9x fat32文件系统:vfat Windows NT ntfs 文件系统: ntfs Mount Windows 文件网络共享:smbfs UNIX(LINUX)文件共享:nfs |
-o options | 主要用来描述设备或档案的挂接方式。常用的参数有: loop 用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset: 指定访问系统所用字符集 |
device | 要挂接的设备 |
dir | 设备在系统上的挂载点 |
设置开机自启动
vi /etc/fstab
fdisk分区
fdisk -l 查看磁盘分区详情
fdisk 硬盘设备名 (显示所有硬盘的分区列表)
(1)Linux 分区
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型
(2)分区操作按键说明
m:显示命令列表
p:显示当前磁盘分区
n:新增分区
w:写入分区信息并退出
q:不保存分区信息直接退出
进程管理类
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用着一定的系统资源
ps 查看当前系统进程状态
ps: process status 进程状态
- ps aux | grep XXX 查看系统中带XXX的进程
- ps -ef | grep XXX 可以查看子父今后进程之间的关系
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有今后进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
ls /usr/lib/systemd/system
# 带d.service的为守护进程
ls /usr/lib/systemd/system | grep d.service
ps aux | less
ps -ef | less
1. ps aux显示信息说明
USER:该进程是由哪个用户产生的
PID: 进程的ID号
%CPU: 该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ: 该进程占用虚拟内存的大小,单位KB;
RSS: 该进程占用实际物理内存的大小,单位KB;
TTY: 该进程是哪个终端中运行的。对于CentOS来说,tty1是图形化终端,tty2-tty5是本地的字符界面终端。pts/0-255代表虚拟终端。
STAT: 进程状态。常见的状态有:
R:运行状态 S:睡眠状态 T: 暂停状态 Z:僵尸状态 s:包含子进程 l: 多线程 +:前台显示 <:高优先级 N:低优先级
START: 该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
2. ps -ef 显示信息说明
UID: 用户ID
PID: 进程ID
PPID: 父进程ID
C: CPU用于计算执行优先级的因子。数字越大,表明进程是CPU密集型运算,执行优先级会降低;数字越小,表明进程是I/O密级型运算,执行优先级会提高
STIME:进程启动的时间
TIY:完成的终端名称
TIME: CPU时间
CMD: 启动进程所用的命令和参数
如果是想查看进程CPU占用率和内存占用率,可以使用aux
如果想查看进程的父进程ID可以使用ef;
kill 终止进程
kill [选项] 进程号 通过进程号杀死进程
killall 进程名称 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
选项 | 功能 |
---|---|
-9 | 表示强迫进程立即停止 |
kill -l 查看各个号码代表的意思
pstree 查看进程树
pstree [选项]
选项 | 功能 |
---|---|
-p | 显示进程PID |
-u | 显示进程的所属用户 |
- pstree
- pstree -p
- pstree -u
top实施监控系统进程状态
top [选项]
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行 |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定进程ID来仅仅监控某个进程的状态 |
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
u | 根据指定用户进行过滤 |
k | 直接杀死 |
netstat 显示网络状态和端口占用信息
- netstat -anp | grep 进程号 查看该进程网络信息
- netstat -nlp | grep 端口号 查看网络端口号占用情况
- netstat -atnp 查看连接
选项 | 功能 |
---|---|
-a | 显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转化为数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
crontab 系统定时任务
crontab服务管理
重启cornd服务管理
systemctl restart crond
选项说明
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
进入编辑界面
crontab -e
# 小例子 每分钟往hello文件追加一个"hello world"
*/1 * * * * echo "hello world" >> /root/hello
项目 | 含义 | 范围 |
---|---|---|
第1个“*" | 一个小时当中的第几分钟 | 0-59 |
第2个“*" | 一天当中的第几个小时 | 0-23 |
第3个“*" | 一个月当中的第几天 | 1-31 |
第4个“*" | 一年当中的第几月 | 1-12 |
第5个“*" | 一周当中的星期几 | 0-7 (0和7都代表星期日) |
符号说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间,比如第一个“*”就代表一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“0 8,12,16 * * *” 就代表在每天的8点0分,,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间访问。比如“0 5 * * 1-6" 代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次,比如”*/10 * * * *" 命令,代表每隔10分钟就执行一边命令 |
示例
45 22 * * * | 每天22点45分执行命令 |
---|---|
0 17 * * 1 | 每周1的17点0分执行命令 |
0 5 1,15 * * | 每月1号 15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五 4点40分执行命令 |
*/10 4 * * * | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同事出现,因为他们定义的都是天。非常容易让管理员混乱 |
软件包管理
RPM
RPM概述
RPM(RedHat Package Manager),RedHat软件包管理工具,类似于windows里面的setup.exe,是Linux这系列操作系统的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
RPM包的名称格式
Apache-1.3.23-11.i386.rpm
“apache” 软件名称
“1.3.23-11”软件的版本号,主版本和此版本
“i386”是软件所运行的硬件平台,Intel 32位处理器的统称
“rpm”文件扩展名,代表RPM包
RPM查询命令 (rpm -qa)
rpm -qa 查询所安装的所有rpm软件包
由于软件包比较多,一般都会才去过滤 rpm -qa | grep 名称
查询具体信息
rpm -qi unzip-6.0-24.el7_9.x86_64
RPM 卸载命令 (rpm -e)
rpm -e 名称 卸载软件包
rpm -e --nodeps 名称 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作
卸载firefox
rpm -e firefox
安装命令 (rpm -ivh)
rpm -ivh 包全名
选项 | 功能 |
---|---|
-i | install 安装 |
-v | –verbose 显示详细信息 |
-h | –hase,进度条 |
–nodeps | 安装前不检查依赖 |
安装firefox
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm
仓库配置
YUM概述
YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次 安装所有依赖的软件包,无须繁琐地一次一次下载,安装。
YUM的常用命令
yum [选项] [参数]
选项 | 功能 |
---|---|
-y | 对所有提问都回答“yes" |
参数 | 功能 |
---|---|
install | 安装rpm 软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清楚yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |
yum方式安装firefox
yum list | grep firefox
# 卸载老版本
yum remove firefox
yum -y install firefox
修改网络YUM源 (默认会自己搜索最近的)
默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等
(1)安装 wget, wget 用来从指定的 URL 下载文件
yum install wget
(2)在/etc/yum.repos.d/目录下,备份默认的 repos 文件
cp CentOS-Base.repo CentOS-Base .repo.backup
(3)下载网易 163 或者是 aliyun 的 repos 文件,任选其一
wget http://mirrors.aliyun.com/repo/Centos-7.repo # 阿里云
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # 网易
(4)使用下载好的 repos 文件替换默认的 repos 文件 例如:用 CentOS7-Base-163.repo 替换 CentOS-Base.repo
mv CentOS7-Base-163.repo CentOS-Base.repo
(5)清理旧缓存数据,缓存新数据
yum clean all
yum makecache
yum makecache 就是把服务器的包信息下载到本地电脑缓存起来
(6)测试
yum list | grep firefox
yum -y install firefox