文章

Linux基础命令


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-

1
pwd

切换目录-cd-

1
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-
1
groupadd     组名     #添加一个组
删除一个用户组-groupdel-
1
groupdel     组名      #删除一个组
修改组名-groupmod-
1
groupmod -n 新组名  旧组名
为用户组添加/删除用户成员-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
  1. 系统中对文件的操作都可以被记录下来,当系统崩溃之后,利用日志功能可以修复数据;
  2. 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)的作用是一样的。

image-20220918184927978

查看文件系统的磁盘空间占用情况

命令(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     #自动挂载;立即生效

卸载磁盘

1
umount   /dev/新硬盘目录文件

挂载本地镜像,配置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块应用的所有子进程
             日志块应用的日志
本文由作者按照 CC BY 4.0 进行授权