Linux的世界里,一切皆为目录。
linux默认目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| / 根目录
/boot #启动引导文件(存储了启动系统时需要的文件)
/bin #存放常用的指令目录(存储必须的程序文件,对所有用户都可用)
/dev #存放硬件设备目录
/media #存放识别的U盘光驱等设备目录
/etc #存放配置文件(存储系统和程序的配置文件)
/home #存放创建普通用户,产生的文件目录
/lib #动态库,一般都是.so的文件(存放系统运行必须的程序库文件)
/lib64 #库文件
/mnt #临时挂载文件目录
/opt #存放额外的程序包。一般将一些大型的、商业的应用程序放置在这个目录
/proc #内核库
/sys #系统目录文件
/srv #存放服务启动之后要提取的数据
/root #root用户的家目录
/sbin #存储用于系统管理,以及仅允许 root 用户使用的程序。如 fsck(文件系统修复程序)、reboot(重启系统)等
/selinux #类似于360,当遭受攻击,这个目录会被触发
/tmp #临时文件夹
/usr #用户文件夹,用户安装的应用程序(大多数软件都会安装在此处)
/var #变量、日志文件夹
/run #系统运行时的数据。在每次启动时,里面的数据都会被删除
|
Linux中的符号
1
2
3
4
5
6
7
8
9
10
| ~ #当前登录用户的家目录(等价与cd /home/用户名/)
. #当前目录
.. #切换到上一级目录
; #在命令与命令中间利用分号(;)来隔开,分号前的命令执行完成(无论成功与否)后就会立刻接着执行后面的命令
* #代表0到无穷多个任意字符
| #管道符;把前一个命令的输出结果输出给下一个命令使用。
注意:为什么有管道符:对结果进行过滤。
\ #转义字符;使用转义符 '\' 显示一些特殊控制字符的字面量;字面量就是没有用标识符封装起来的量,是“值”的原始状态
[@wyw-PC:/$] echo this is \lalala dog
this is lalala dog
|
目录操作
获取当前目录路径-pwd-
切换目录-cd-
创建目录-mkdir-
1
2
3
| mkdir 目录名称
mkdir 目录名称{1..10} #创建10个子目录
-p #创建多级目录 mkdir -p /home/dd/kk
|
删除目录-rmdir、rm-
1
2
3
| rmdir 目录名称 #用于删除目录,但不能删除一个非空目录(目录下有文件或子目录)
rm -rf 目录或文件名 #删除非空目录
|
移动文件及目录-mv-
1
2
3
| mv #移动或重命名
mv * 目标文件 #移动多个文件到指定目标目录。
mv 源文件 目标文件 #(没有目标文件则是对源文件重命名,有则是移动剪切)
|
复制文件及目录-cp-
1
2
| cp 源文件 目的文件 #注意:如果只想拷贝子目录或整个目录及下面的子目录需加-r
-r #拷贝目录及其子目录
|
查看目录信息-ls-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| ls #列出当前目录下面所有内容(后面可以跟目录路径)
-l #详细显示目录里的内容
-a #将把这个目录下的隐藏文件显示出来
-i #列出文件索引号
-h #以文件大小(SIZE)以 Mb,Gb,Tb 等形式显示
例:【命令结构】
[root@www /]# ls -l
total 64
d rwx r-x r-x 2 root root 4096 Feb 15 14:46 cron
【三个为一组权限】:读(r:4) 写(w:2) 执行(x:1) 没有权限(-:0)
文件类型:
[d]:目录;[-]:文件;[ l ]:链接;[ b ]:可储存周边设备;[ c ]:序列设备。
rwx:该【文件的所有者】拥有该文件的权限
r-x:该文件的【所有者的同组用户】拥有该文件的权限
r-x:【其他用户或者是公共用户】的权限
“2”是纯数字 ,表示 文件链接个数
第一个“root” 表示文件的所有者
第二个“root” 表示为文件的所有者的所属用户组
“4096”,表示为文件长度(大小)
“3月 23 2017”,表示文件最后更新(修改)时间
“cron” 表示文件的名称
【备注】:文件类型.文件所有者权限.文件所有者的同组用户权限.公共用户权限.(硬/软)链接数.文件所有者.所有者的所属用户组.
|
文件操作
创建文件-touch-
1
2
| touch 文件名 #创建一个空文件(可以一次性创建多个文件)
touch 文件名{1..10}.txt #创建多个文件
|
查看文件类型-file-
1
2
| file [参数选项] 文件/目录
file * #获取当前目录下所有文件的类型
|
写入或输出-echo-
1
2
3
4
5
| echo '文本内容' > 文件名 #向文件写入文本内容
“>” #覆盖、输出重定向 (会将原来的文件内容覆盖)
“>>” #追加 (不会覆盖原来文件的内容,而是追加到文件的尾部)
echo 变量名或者"文本内容" #输出显示变量值或输出内容
|
复制、浏览文件内容-cat-
1
2
3
4
5
6
7
| cat [oldfile] > [newfile] #覆盖复制 oldfile 文件内容到 newfile
cat > [fileName] #创建一个文件;可以直接输入内容
cat -n 文件名 | more #浏览文件
【选项】:
-n #显示行数
| #链接符
zcat 压缩包文件名 #显示压缩文件内容
|
分页显示文件内容-more、less-
1
2
3
4
5
| more 【参数】 文件名 #分页全屏显示
-num #限制每页显示指定行数
less 文件名 全屏显示(大文件效率高)
#「less」命令,在终端窗口高度缩小时会聚焦文件文字的开头部分,而「more」命令,在终端窗口高度缩小时会聚焦文件文字的末尾部分。
|
显示文件内容前几行-head-
1
2
3
4
| head 【选项】 文件名 #(默认显示前10行)
选项:
-n n代表数字 #显示前多少行
-c 后面跟数字 #显示多少字节
|
显示文件内容后几行-tail-
1
2
3
4
| tail 【选项】 文件名 #(默认显示文件后10行内容)
选项:
-n n代表数字 #显示后多少行
-f #实时追踪文件的更新、
|
用户及用户组管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| /etc/passwd #所创建的用户账户和其相关信息(不包含密码),所有用户对此文件有读权限
文件格式:
account:用户名或账号
password :用户密码占位符(加密后的密码)
UID:用户ID号UID
GID:用户组ID号GID
GECOS:用户的详细信息(如姓名,年龄,电话等)
diretory:用户所在的家目录
shell:用户所在的编程环境
/etc/shadow #保存用户密码
文件格式:
account:
password:
最近更改密码的日期:
密码不可更该的天数(用户一次更改密码之后,要等多长时间才再次被允许更改密码):
密码需要重新更改的天数:
密码更改前的警告期限:
密码过期的宽限时间:
帐号失效日期:保留
【root用户】:UID和GID都等于0的用户
【系统用户】:通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。
【普通用户】: UID:1000+;只能由root用户创建,权限由root分配,拥有家目录可以登录;所有普通用户的家目录都在 /home/ 下;普通用户无法直接进行修改系统配置,安装或卸载软件等操作。
|
查看用户信息
1
2
3
4
5
6
7
| id 用户名 #查看显示用户信息 (包括用户id号、所在组的id号、属于哪个组,组的id号)
whoami #查看显示当前用户属于哪个用户组
exit #返回到原来某个用户
su - 用户名 #切换用户(高权限切换到低权限的用户不需要输密码)
|
用户管理
添加用户-useradd-
1
2
3
4
5
6
7
8
9
| useradd 【选项】 用户名 #创建用户
【选项】:
-d + 指定家目录(指定目录不用创建)
passwd 用户名 #修改或创建用户密码(8位字符);如果没有输入用户名,则修改自己的密码
useradd -g 用户组名 用户名 # 添加一个用户,将它放到指定的用户组
【选项】:
-g #指定用户组名
|
删除用户-userdel-
1
2
3
| userdel 【选项】 用户名 #删除用户
【选项】:
-r #删除用户及家目录
|
修改用户的所属用户组-usermod-
1
2
3
4
| usermod -g 用户组名 用户名 #将某个用户修改到另一个基本用户组
【选项】:
-g #指定主(基本)用户组名
-G #指定附加组组名
|
用户组管理
1
2
3
4
5
6
7
8
| 【基本组】:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组,不可以把用户从基本组中删除。在创建文件时,文件的所属组就是用户的基本组。
【附加组】:除了基本组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。
用户不论为与基本组中还是附加组中,就会拥有该组的权限。一个用户可以属于多个附加组。但是一个用户只能有一个基本组。
/etc/group 组配置信息
(包括组名、x(组的口令)、组id)
/etc/gshadow 用户组的密码和登录信息 (加密处理)
|
添加一个用户组-groupadd-
删除一个用户组-groupdel-
修改组名-groupmod-
为用户组添加/删除用户成员-gpasswd-
1
2
| gpasswd -a 用户名 组名 #添加用户道组
gpasswd -d 用户名 组名 #从组中删除用户
|
文件权限及所有者
修改文件权限-chmod-
1
2
3
4
5
6
7
8
9
10
11
12
| chmod u+w(赋予的权限) 文件名 #修改权限
【选项】:
= #赋予给定的权限,并取消其他现有的权限
+ #加号后面跟要添加的权限(读、写、执行)
- #减号后面跟要删除的权限
, #逗号可以用来组合参数“例如:go-rw,u+x”
字母a #为所有用户分配权限的快捷方式
字母u #代表“文件所有者”
字母g #代表“文件所有者所在的用户组”
字母o #代表“公共用户”
备注:+s 运行普通用户以root身份暂时执行该程序
chmod -R [目录] #指定目录下所有的文件和文件夹及其子文件夹权限
|
(owner)文件所有者 |
(group)文件所有者所在的用户组 |
(other)公共用户 |
r w x |
r w x |
r w x |
400 200 100 |
40 20 10 |
4 2 1 |
修改文件所有者-chown-
1
2
| chown 【-R】 所有者:所属组 文件/目录
-R : #处理指定目录以及其子目录下的所有文件
|
修改账号和密码有效期限- chage -
1
2
3
4
5
6
7
8
| chage -E ‘2019-06-26’ aihuidi #aihuidi这个账号的有效期是2019-06-26
-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:有效期,0表示立即过期,-1表示永不过期
-W:密码过期前,开始警告天数
|
进程相关
列出系统进程-ps-
用来列出当前系统中正在运行中的进程快照.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ps -ef #尽量用-ef
ps aux
ps -选项 | grep 进程名称/用户名
ps -A 等价于 ps -e
A #列出所有的进程
a #选项意思是 ps 命令显示 所有(all) 用户的进程。除了与终端无关及组进程不会被显示。
u #选项表示使用人类易读的方式或格式显示进程详细信息。
x #选项指示 ps 命令显示出那些没有控制终端的进程。这些进程主要是在系统启动时就运行的进程和一些 后台程序
-e(every) #显示所有进程,而不仅仅是当前用户的进程
-u(user) #显示面向用户的进程的详细信息,如进程所有者、CPU 使用率、内存使用率等
-f(full-format) #以全格式的列表显示进程的详细信息,包括进程之间的层级关系
-p(pid) #查找具有指定进程 ID 的进程
-C(command) #查找具有指定命令名称的进程
-aux #以详细格式显示所有正在运行的进程,其中 x 指的是在没有控制终端的情况下列出进程,这些显示的主要是启动并运行在后台的进程
|
注:两者的输出结果差别不大
aux是BSD风格
-ef是System V风格;会显示出来就是带全路径的进程名
查看进程资源占用-top-
实时显示系统中各个进程的资源占用状况,类似与Windows的任务管理器.
1
2
3
4
5
6
7
8
| top -p 进程号
-p #指定特定的pid进程号进行观察
第一行按顺序输出以下信息: -- 当前时间,系统启动运行时长,活动用户会话数,系统平均负载(最近 1 分钟,5 分钟,15 分钟时间内平均统计值)。
第二行按顺序输出: -- 进程总数 ,运行进程数 ,休眠进程数 ,停止进程数 ,僵尸进程数 。
PID (进程 ID -- process ID) ,USER(进程所属用户) , PR (进程优先级数 -- priority ) ,NI(进程优先参数 -- nice value) , VIRT (虚拟内存占用 -- virtual) ,RES(物理内存占用 -- physical resource) , SHR (共享内存占用 -- shared memory) ,S(进程状态 -- status) ,% CPU (CPU 占比) ,% MEM(内存占比 -- RAM memory) , TIME+ (活动时长 -- time of activity) ,COMMAND(启动进程的命令 -- command)
|
进程状态解释
1
2
3
4
5
| R (Running) 表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行。
D (Disk Sleep) 不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。
Z (Zombie) 表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。
S (Interruptible Sleep)可中断状态睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R 状态。
I (Idle) 空闲状态,用在不可中断睡眠的内核线程上。前面说了,硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。要注意,D 状态的进程会导致平均负载升高, I 状态的进程却不会。
|
杀掉进程
1
2
3
| kill -9 [进程PID] #用于杀掉单个进程,如果后面跟父进程,则相关子进程也会被杀掉
注:对于僵尸进程,能用kill -9 来强制终止退出;
比如一个程式已完全死掉,如果kill 不加信号强度是没有办法退出,最佳的办法就是加信号强度 -9
|
1
2
3
| killall [程式名] #会杀死指定名字的所有进程
例如:要杀死一个名为terminal的进程,我们需要执行:
killall terminal
|
1
2
3
4
5
| pkill [程式名] #作用与killall类似
注:killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。
pkill 中的进程名称长度限制为 15 个字符
例如:要杀死一个名为terminal的进程,我们需要执行:
killall termi
|
1
2
3
4
| xkill #杀死一个服务器客户端;终止 Linux 进程/无响应的应用程序
注:它可以从X窗口杀死进程,而无需传递进程名称或其PID。
xkill 实用程序强制 X 服务器关闭与其客户端的通信,这会导致客户端被其 X 资源杀死。 xkill 是 X11 实用程序的一部分,它可以非常方便地杀死不必要的窗口。
|
运行级别 配置信息文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| yum groupinstall -y "GNOME Desktop" #安装图形界面
运行级别: init 数字 #切换运行级别
/etc/inittab #系统运行级别 (可以做一个修改)
who -r #查看运行级别
- 0 关机
- 1 单用户 (找回密码:因为进入单用户模式,root不需要密码)
- 2 多用户无网络服务
- 3 多用户有网络服务 (纯命令行界面)
- 4 保留
- 5 图形化界面
- 6 重启
|
单用户(重置密码)操作步骤
1
2
3
4
5
6
7
8
| 开机在引导时输入回车键
看到一个界面输入e
看到一个新界面,选中Kernel(编辑内核),再输入e
在这行空格输入1,回车
再次输入b,进入到单用户模式;使用passwd 指令修改root密码
|
1
2
3
4
5
6
7
8
| systemctl get-default 获取当前默认启动模式
模式:
multi-user.target 命令行模式
graphical.target 图形界面模式
systemctl set-default 模式 设置默认启动模式
reboot 重启
|
1
2
| yum grouplist
yum groupinstall -y "Server with GUI" 安装图形化桌面
|
帮助指令
1
2
3
| man 指令(如:cd、ls等等) 解释某个指令的作用及使用方法
help 指令(如:cd、ls等等) 帮助信息(描述指令用法)
|
覆盖、追加
1
2
3
| “>” #覆盖、输出重定向 (会将原来的文件内容覆盖)
“>>” #追加 (不会覆盖原来文件的内容,而是追加到文件的尾部)
|
sleep、time
1
2
3
4
5
| #'sleep' 命令使终端运行等待指定的时间。默认地,时间的指定以秒为单位。
$ sleep 5
#'time' 命令用于统计其命令行执行使用了多少时间。
$ time sleep 5
|
查看修改本机时间和时区
1
2
3
| date -s "2020-12-20 16:34:50" #修改时间日期
date -R # 查看当前时区
cal #显示当前日期、日历
|
挂载、卸载、磁盘情况查询
文件系统类型:
Linux:
- ext4 日志式文件系统,最大支持IEB磁盘分区,单个最大文件16TB;向下兼容
- ext3 增加日志功能,可回溯追踪
- ext2 具有极快的速度和极小的CPU占用率,可用于硬盘和移动存储设备
- xfs可以管理500T的硬盘,rhel7默认文件系统
- brtfs文件系统针对固态盘做优化
windows:
- FAT16 最大支持2GB磁盘分区,单个文件最大为2GB
- FAT32(即Vfat) 32为文件分配表,最大支持128GB磁盘分区,单个最大文件为4GB
- exFAT(即扩展FAT) 适用于闪存,不适用于磁盘,最大支持128PB磁盘分区,单个文件最大为16EB,能够在Linux、Windows、MacOS中同时识别
- NTFS 日志式文件系统,最大支持2TB磁盘分区,单个最大文件为2TB
- 系统中对文件的操作都可以被记录下来,当系统崩溃之后,利用日志功能可以修复数据;
- NTFS文件系统是windows操作系统中的一种安全的文件系统,管理员或用户可以设置每个文件夹的访问权限,从而限制一些用户和用户组的访问,以保障数据的安全
其他:
- RAMFS:内存文件系统
- ISO 9660:光盘
- NFS:网络文件系统
- SMBAFS/CIFS:支持Samba协议的网络文件系统
- Linux swap:交换分区,用以提供虚拟内存。
关于磁盘分区:
MBR分区方案,只能支持最大2TB的分区(硬盘)。大于2TB的硬盘需要采用GUID分区方案
1.注意磁盘分区中sdx,hdx的区别,因为他们所代表的硬盘接口不同。
- SATA 接口硬盘(sdx来标识)
- IDE 硬盘(hdx来标识)
- SCSI接口(Small Computer System Interface,小型计算机系统接口,sdx来标识)
2.主分区加上扩展分区不能超过4个
3.linux中强制规定1,2,3,4这四个分区只能分给主分区和扩展分区(注意扩展分区是不能写入数据的,必须在里面建立逻辑分区才行),所以逻辑分区不论怎么分都是从5开始的
备注:【swap交换分区】:它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。
查看文件系统的磁盘空间占用情况
命令(df)
注:可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df -lhT [设备路径] #文件系统磁盘使用情况统计
输出格式:
- Filesystem(文件系统)
- Type(文件系统类型)
- Size(分配空间大小)
- Used(已用空间)
- Avail(可用空间)
- Use%(已用百分比)
- Mounted on(挂载点)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| -a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
|
lsblk -f #列出所有可用块设备的信息
(包括设备名称、文件系统类型、UUID、可用空间大小、空间使用率、挂载点)
注:lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。
查看文件/目录占用磁盘空间大小
命令(du)
du -acsh –max-depth=1 [/目录] #查询指定目录占用磁盘情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| a 含文件 s 指定目录占用大小汇总 h 带计量单位 c 列出明细+汇总值
--max-depth=1 子目录深度
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
|
对新硬盘分区格式化(Fdisk)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #sda代表系统中的第一块盘;sdb则代表系统中的第二块盘;依次类推
#sda1代表第一块盘的第一个分区;sdb2则是第二块盘的第二个分区;依次类推
#以下是对磁盘进行操作
fdisk [硬盘路径] #对磁盘进行分区;默认是在dev目录下;例如:fdisk /dev/sda
菜单操作说明:
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
mkfs [-t] [文件系统格式] [设备文件名] #指定文件系统格式,并对其格式化或者mkfs.ext4 [设备文件名]
|
临时挂载(重启失效)
1
2
| mount 硬盘目录 挂载点目录 #对分区格式化的磁盘进行挂载生效
#如果是U盘等设备无需分区格式化操作,只需找到盘符目录,直接创建挂载点挂载即可。
|
永久挂载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #永久生效
vim /etc/fstab #(修改文件)
设备名称/UUID 挂载点 文件系统类型 挂载选项 转储频度 自检次序
(1)要挂载的设备:
设备文件、LABEL=, UUID=
(2)挂载点:
swap没有挂载点,挂载点为swap
(3)文件系统类型
ext2、ext3、ext4、xfs、nfs、smb、iso9660等
(4)挂载选项:多个选项间使用逗号分隔;
async、sync、_netdev
defaults( rw, suid, dev, exec, auto, nouser, async, and relatime.)
(5)转储频率:
0:从不备份
1:每日备份
2:每隔一天备份
(6)自检次序:
0: 不自检
1:首先自检,通常只能被/使用;
2:等数字为1的自检完成后,再进行自检
#保存退出
mount -a #自动挂载;立即生效
|
卸载磁盘
挂载本地镜像,配置yum
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| mkdir /mnt/cdrom #创建挂载点
mount /dev/cdrom(光盘名称) /mnt/cdrom #挂载光盘;虚拟机环境;将光盘挂载到自己创建的目录,这样就可以
df -HT #查看是否挂载成功
mkdir /repo #暂时将其他.repo文件移移到repo目录下面,防止造成干扰
mv /etc/yum.repos.d/*.repo /repo/
cd /etc/yum.repos.d/
vim local.repo #创建本地YUM源
---------------------------------------------------
[LocalRepo]
name=LocalRepository
baseurl=file:///mnt/cdrom/ #挂载后的镜像路径
enabled=1 #启动YUM
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
---------------------------------------------------
yum clean all
yum repolist #清除缓存
#接着就可以用本地yum源安装服务了;yum install -y
#真实环境挂载
mount -o loop /home/CentOS-7-x86_64-DVD-1708.iso /media/cdrom
备注: -o是参数,loop是把一个文件当成硬盘分区mount挂着到目录
|
RPM包(不需要联网安装;链接挂载镜像下载)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| 类似于Windows中的setup.exe包
rpm -qa | grep 软件包名 #查询安装了的指定软件包
-qa rpm包名 #查询安装了的rpm包
-qi rpm包名 #查询安装了的rpm包软件信息
-ql rpm包名 #查询安装包装了哪些文件
-qf 文件路径 #查询的文件所属的rpm包
-e rpm包名 #删除rpm软件包
-ivh rpm包名 #安装rpm包
挂载目录:/media/centos/packages(包含所有的rpm包)
|
yum源(联网安装;链接服务器下载;二进制包)
二进制安装
Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。
而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| 【RPM】
#已经编译好的软件包。直接安装即可使用
#需要根据计算机的CPU和操作系统去选择
【命名格式:软件包名-软件包版本-发布次数-适合的操作系统平台.CPU类型.包扩展名(rpm)】
1、安装二进制包:
rpm -ivh 包全名
注: i(安装);v(详细信息);h(进度)
2、升级更新版本
rpm -Uvh 包全名(要升级的软件版本)
注: U(Update更新)
3、卸载
rpm -e 包名((这里不需要完整包名;例如httpd))
【YUM】
#yum在线安装可有方便解决rpm安装依赖文件
yum配置文件:/etc/yum.repos.d
Centos-Base.repo是基本yum源文件,如联网,默认生效
[base] 容器名称
name 容器说明,随便写
mirrorlist 镜像站点,可以注释掉
baseurl yum源服务器地址,默认是Centos官方Yum源服务器,如果觉得慢可以该其他Yum源服务器 (重要)
enabled 此容器是否生效;如果不写或者enabled=1都是生效,enabled=0不生效
gpgcheck 为1是指RPM的数字证书生效,0不生效
gpgkey 数字证书的公钥文件保存位置。不用修改
1、yum安装
yum -y install 包名
注: -y自动回答yes
2、升级
yum -y update 包名
3、卸载
yum -y remove 包名
yum list | grep [软件名称] #查询可用的软件包
yum install net-tools.x86_64
描述:net-tools工具箱包括arp, hostname, ifconfig, netstat, rarp, route, plipconfig, slattach, mii-tool and iptunnel and ipmaddr等命令
|
源码安装
1
2
3
| #程序员写的原始代码文件,不能直接安装使用,源码都是C语言写的
#需要进行编译,后生成可执行文件(即二进制文件)安装使用
|
源码包命名格式
1
| #命名格式:源码包.tar.gz 源码包.tar.bz2 源码包.tar.xz 源码包.zip
|
安装
1
2
3
4
5
| 1、使用tar工具先解压源码包
2、./configure --prefix=安装目录 #检测并指定软件安装位置#默认安装位置/usr/local/bin
#configure是一个脚本文件,用来检测你的安装平台的目标特征,比如检测是否有CC或GCC编译器(C语言编译器);当执行configure命令时,configure会根据当前系统环境动态生成一个适合本系统的Makefile文件,供make命令使用。
3、make && make install
#注:make会去当前目录中寻找Makefile文件,并根据该文件中的要求完成整个编译过程,从Makefile(告诉make命令需要怎么去编译和链接程序)中读取指令,然后编译;执行make install命令将上一步编译好的二进制文件安装到指定的目录中去
|
不同发行版平台
发行版 |
包类型 |
工具 |
安装源 |
RedHat/Centos/Fedora/SUSE |
rpm |
rpm,rpmbuild |
yum/dnf |
Ubuntu/Debian |
deb |
dpkg |
apt |
注:RedHat的yum是收费服务,Centos的yum是免费服务
1
2
3
4
5
6
7
| #x86_64包只能安装在64位系统上
#i386, i586, i686包可以安装在32位和64位系统上;
#noarch表示软件包与硬件架构无关,可以通用;
#64位的包不能安装在32位的系统上。
|
网卡、DNS、hosts、防火墙配置 | 系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| vim /etc/sysconfig/network-scripts/ifcfg-eth0 #网卡
【 ONBOOT 是否激活网卡设备
BOOTPROTO 使用动态分配还是静态分配IP地址
TYPE 网卡类型
IPADDR IP地址
NETMASK 子网掩码
GATEWAY 网关地址 】
vim /etc/resolv.conf #DNS
【 nameserver 主DNS nameserver 备DNS 】
vim /etc/hosts #hosts文件
vim /etc/selinux/config #防火墙配置文件
|
服务启动……….
1
2
3
4
5
6
7
8
9
10
11
12
13
| systemctl restart 服务名称 #重启
systemctl start #启动
systemctl stop #停止
systemctl disable #停止开机自启
systemctl enable #开机自启
systemctl status #状态
systemctl list-unit-files --type=service #查看所有已启动的服务
|
firewalld.service 防火墙 | 端口监听服务
1
2
3
4
5
6
7
8
9
10
11
12
13
| firewall-cmd --remove-port=3000/tcp --permanent #关闭端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp #开放端口
firewall-cmd --list-ports #查看开放的端口
–zone #作用域(区域)
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
firewall-cmd --new-service=ssh #允许SSH服务通过
firewall-cmd --delete-service=ssh #禁止SSH服务通过
firewall-cmd --list-services #显示当前服务
netstat -nltp | grep 进程名称 #查看显示指定服务进程所监听的端口号
netstat -tunlp | grep 端口号 #查看显示指定端口所对应的服务进程
netstat -lantp | grep -i listen #查看显示所有正在监听对应端口的服务(包括显示端口)
|
查看系统最后一次开机关机时间
1
2
3
4
5
6
| last -x | grep reboot
输出格式:
last -x | grep shutdown
输出格式:
|
查找 文件- find -
find [ 目录路径 ] [ 选项参数 ]
1
2
3
4
5
6
7
8
| -ctime -n +n #按文件创建时间来查找文件,-n指最近几天内,+n指几天以前
-mtime -n +n #查找最近时间修改过的文件
-mmin #查找最近几分钟修改过的文件
-atime -n +n #查找最近访问过的文件
-amin -n +n #查找最近几分钟内访问过的文件
-user [用户名] #查找属于这个用户的文件
-name [文件名称] #按文件名称查找
-type b/d/c/p/l/f #按文件类型查找;查是块设备、目录、字符设备、管道、符号链接、普通文件
|
压缩与解压 - tar - 、- zip - 、- unzip -
包后缀.tar和.tar.gz
1
2
3
4
5
| #.tar 一般用于文件备份(打包后的文件大小是所有文件加起来的总和)
#.tar 只是进行打包,并没有压缩。 可用tar -cvf进行打包,用tar -xvf进行解包。
#.tar.gz 是既打包又压缩 。tar –czvf [压缩包名] [文件或目录]打包并且压缩,tar –xzvf [压缩包名]解包并且压缩。
#.gz 以 gzip 压缩
#.bz2 以 bzip2 压缩
|
解压缩-zxvf
1
2
3
4
5
| #-x 解压(解压tar)
#-v 过程
#-f 文件
#-C 大C是解压到指定的目录
tar -zxvf [压缩包名.tar.gz]
|
压缩-zcvf
1
2
3
4
5
6
7
| #--exclude 在压缩的过程中,不要将 FILE 打包!
#-p 保留文件属性
#-j 以bzip2压缩
#-z 以zip压缩
#-c 压缩(创建tar)
#-f 文件
tar -zcvf [自定义压缩后的名字.tar.gz/bz2] [指定要压缩的文件和目录]
|
压缩 - zip -
1
2
3
4
| -r 递归
-q 不显示执行过程
-d 删除删除压缩包中指定文件
zip -r [自定义包名.zip] [要压缩的文件目录]
|
解压缩 - unzip -
1
2
3
4
| -v 查看压缩包内容
-d 指定要解压到指定的目录
unzip [压缩包名.zip]
unzip [压缩包名.zip] -d [指定目录]
|
注册系统服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| 服务类型:
系统服务:开机不登陆就能运行的程序(常用于开机自启)
用户服务:需要登陆以后才能运行的程序
Centos系统服务目录:
/etc/systemd/system
注册完毕后需要马上生效:systemctl daemon-reload重新加载配置文件
配置文件:
[Unit]区块 启动顺序与依赖关系
Description= 给出当前服务的简单描述
Documentation= 给出文档位置
After= 在当前指定的单元(服务)启动之前启动(启动顺序)
Before= 在当前指定的单元(服务)启动之后启动(启动顺序)
Wants= 与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败(弱依赖关系)
Requires= 当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败(强依赖关系)
[Service]
Tyoe= 启动类型
举例:Type=simple:ExecStart字段启动的进程为主进程
forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)
ExecStart= 启动进程时执行的命令(应用程序目录、类似于最后执行的.exe文件)
Restart= 重启方式(守护进程)
举例:on-failure 表示任何意外的错误,就将重启sshd(守护进程)
on-abnormal 对于那些允许发生错误退出的服务
[Install]
WantedBy= 该服务所在的目标服务组(Target)
举例:muti-user.target 表示该服务所在的Target(muti-user.target就是服务组)
注:默认的启动 Target 是multi-user.target。在这个组里的所有服务, 都将开机启动。这就是为什么 systemctl enable命令能设置开机启动的原因。
(systemctl status sshd.service)
服务状态属性:
Loaded行:配置文件的位置,是否设为开机启动
Active行:表示正在运行
Main PID行:主进程ID
Status行:由应用本身(这里是 httpd )提供的软件当前状态
CGroup块:应用的所有子进程
日志块:应用的日志
|