Centos7:

终端的组中

[root@localhost 桌面]# 

root 是用户 @ 表示 在
#表示 超级管理员  其他用户为 $

关机 命令:

正常关机:
shutdown -h now
关闭内存(非正常关机):
halt
其他关机:(仅限6使用 7不支持)
init 0

VM 备份 :

备份有两种方式 
1 快照   (短期备份)  
2 克隆    (长期备份)

目录结构:

Bin:  二进制文件
Dev: 该目录主要是存放外接设备 u盘 光盘等 在其中的设备不能直接被访问 需要挂在
etc: 存放 一些配置文件
home: 除了root 之外的 用户的Home目录
proc: process 表示进程  
sbin: super binary 存放一些二进制文件  但是必须有 super 权限的才能执行  (超级管理员才能执行的命令存放地)
Tmp: 临时文件 不需要手动删
usr: 存放用户自己安装的软件 
var: 存放 日志文件
mnt:当外界设备 需要挂在的时候 就需要挂在到mnt下

基本指令

# ls [选项] [路径] 列表清单列出

选项 
-l 表示 list  列表形式展示
-a 表示  全部的文件和文件夹 包含隐藏文件
-h 显示的时候 大小 以 最合适的大小显示 (可读性较高)



#pwd  列出当前工作的路径

#cd change directory 切换工作路径
cd ~ 可切换到家目录

#mkdir [路径] ...[路径] [参数]  创建文件夹  "路径可以是文件夹名称" 
-p 强制 "可以创建多层"

#touch  [路径] ...[路径] [参数] 创建文件


#cp [路径] [路径] [参数]  复制文件 或 文件夹到指定的位置 (copy)

-r 递归复制 (把文件夹的文件也复制过去)
复制可以改名


#mv   [路径] [路径]  移动 剪切 重命名

#rm  [路径] [参数]  移除文件 或者文件夹

-f  不提示 (force) 强制删除
-r  删除目录 (递归删除)

#vim [文件路径] 打开一个文件 可以是不存在的文件

shift + : 输入q 回车 退出

#>            输出 重定向  (覆盖输出) 
#>>            输出 重定向  (追加输出) 


#cat  [路径] [...路径] 直接打开文件  (直接输出文件的内容)

可以配合 > 使用

蓝色表示 目录
京蓝色 系统文件
绿色 表示 权限限制为拥有全部权限
黑色 表示文件

进阶指令

#df [参数] 查看磁盘空间
-h 可读性较高的显示

#free [参数] 查看内存空间
-h 可读性较高的显示
-m 显示为MB单位

#head [文件] [参数]  显示文件前10行内容
-n 查看前xx 行

#tail [文件] [参数]  显示文件后10行内容 (主要 看日志)
-n 查看后xx 行
-f 实时更新 (主要是用来看日志 会动态显示)



#less  以较少的内容进行输出


#wc [参数] 统计信息 (包括行数,单词数,字节数)
-l 表示 line 行数
-w 表示 word 单词数 (依照空格进行区分)
-c 表示bates 字节数


#date  [参数] 时间
#date  + %F  输出  2022-05-10
# date "+%F %T" 输出  2022-05-10 21:31:35
# date "-1dat" "+%F %T" 输出  2022-05-19 21:31:35


#cal [选项] [[[日] 月] 年]

选项:
 -1, --one        只显示当前月份(默认)
 -3, --three      显示上个月、当月和下个月
 -s, --sunday     周日作为一周第一天
 -m, --monday     周一用为一周第一天
 -j, --julian     输出儒略日
 -y, --year       输出整年
 -V, --version    显示版本信息并退出
 -h, --help       显示此帮助并退出

#clear  清屏  快捷键 Ctrl +L  windows (cls)

#  |   管道  
#ls/|grep o 过滤出 包含o的文件名  前面是输入 后面是输出


列举出 最老的文件

ls -tr | head -1 | xargs

高级命令

# hostname [参数] 输出完整主机名
-f  输出主机名中的 FQDN (全限定域名)

#id  显示ID

#whoami 我是谁? 显示当前登录的用户  

#ps [参数] 查看进程
-e 等价于 -A 表示显示全部
-f 列出全部列


#top   查看服务器进程 占用资源
显示的时候 按下 
 M  按照内存(MEM) 从高到低   
 P 按照COP使用率 从高到低
1  显示CPU 信息


#du -sh  [路径] 查看目录真实大小

#find 路径范围 [选项] [选项值] 查找
选项
-name 按照文件名
-type 按照类型  ( - 表示文件 d 表示文件夹)

例 find ../ -name 123 |wc -l

#service 服务名 "srart |stop | restart" 启动 关闭 重启服务

#kill  [进程PID] 杀死进程

#killall  [进程名] 根据进程名称杀死进程 

#ifconfig  获取网卡信息

#reboot [参数]  重新启动计算机

-w  模拟重启 但是不重启   (只写关机和开机日志)


#shutdown   关机  (慎用)  尽量用 reboot


#up time  输出计算机 持续在线时间


#uname  [参数] 获取计算机相关信息
-a 全部信息

#netstat [参数] 查看网络链接状态
-t 列出 TCP协议
-n 列出IP地址 (可读性较好的方式展示)
-l 过滤出 state 状态列中 数值为 listen (监听)的链接
-p  显示 pid 和进程名

#man  [命令]  查看命令手册

vim 三种模式

1.命令模式  可以输入快捷键 进行一些操作  (删除行  复制 行 移动光标 粘贴等)

2.编辑模式

3.末行模式   (搜索 替换 保存 推出 撤销 高亮)

VIM 打开三种方式

#vim 文件路径

#vim  +数字   文件路径  打开文件 并跳转到 对应行

#vim  路径1  路径2  路径3

vim光标移动

光标移动到行首  
shift + 6     ^ 

光标移动到行尾
shift+ 4    $

光标移动到首行
shift + gg

光标移动到末行
G


翻屏 
向上 ctrl +b   / pgup

向下 ctrl +f   / after 

拓展
1.快速把光标移动到指定的行数
# 数字 + G
2.以当前位置快速向上/下移动指定行数
# 数字 + 方向键 
3.以当前位置快速向左/右移动指定行数
# 数字 + 方向键 
4.末行模式下 移动打指定行 
# :数字

vim 复制操作

复制光标所在行
yy


粘贴
p


已光标所在行 复制指定行数
数字 + yy

可视化复制
ctrl + v  上下左右 控制选区   yy复制  p粘贴

vim 撤销 放弃操作

撤销
:u  撤销一步

恢复

:r  恢复到不可撤销的状态

5. 拓展
快速把光标移动到制定的行

1.数字快速移动到指定的行数

vim 各种模式之前的切换

![img.png](img.png)

vim 末行模式的操作

进入  
# :
退出
# Esc Esc


保存
# :w

另存为 
# :w  [路径]

退出
# :q


保存并退出

# :wq

强制退出  
# :q!

调用外部命令(了解)
# :!s




搜索

# /关键词 




搜索结果中切换 上下

# N  向上  
# n  向下


取消高亮

# :nohl   (no high light)



替换
(string replace)

# :s/[搜索的关键词] /新的内容    只替换关闭所在行 第一个
# :s/[搜索的关键词] /新的内容/g    只替换关闭所在行 全部
# :%s/[搜索的关键词] /新的内容    替换全文  每一行第一个符合条件的
# :%s/[搜索的关键词] /新的内容/g    替换全文


显示行号

# :set nu



取消显示行号

# :set nonu

vim 拓展

打开多个文件

#vim [文件1] [文件2] [文件3]....

切换 
:files  查看打开的文件


%a 代表 active  活跃的
# 代表 上一个打开过的文件

切换文件方式
1. # :open [文件名]  打开指定文件
2. # :bn     #:bp 切换上一个文件  下一个文件  (back next     back prev)
3. #

vim 编辑模式

在光标所在行的前面插入  i  (insert)
在光标所在行的后面插入  a  (after)
Esc 退出

vim 实用技巧

代码着色:
显示: (默认显示)
:syntax on


关闭: 
:syntax off


在vim使用计算器

1.在编辑模式下 
2.按下ctrl +R  然后输入 = 此时光标会变到最后一行
3.输入计算的内

vim 的配置

vim 有三种配置:
a. 在末行模式下输入的配置   -- 临时文件  
b. 个人配置文件  (在 ~/.vimrc) 没有可以新建
c. 全局配置文件  (在 /etc/vimrc)


配置:

设置默认显示 行号

set nu






别名机制:(创建自定义命令)

文件位置 : (~/.bashrc)
参考写 即可


退出方式:
# :x 
如果文件没有编辑 就是保存退出 如果没有编辑就是退出

如果是 :wq 退出  文件时间会被修改

:X 大写X 代表文件进行加密操作

Linux 自有服务

运行级别

#    0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的
#    1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录
#    2 多用户模式,没有NFS和网络支持
#    3 完整的多用户文本模式,有NFS和网络,登陆后进入控制台命令行模式
#    4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置
#    5 图形化模式,登陆后进入图形GUI模式,X Window系统
#    6 重启模式,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启


# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#


# systemctl set-default multi-user.target

用户与用户组管理

/etc/passwd     存储用户相关信息
/etc/group      存储用户组相关信息
/etc/shadow     存储用户密码相关信息


用户管理



添加用户
# useradd [选项] 用户名
-g: 表示指定用户的用户组  选项值可以是 用户组id 或者用户组名
-G:附加组 选项值可以是 用户组id 或者用户组名
-u: 用户 uid  用户的id (用户标识符) 系统默认会总500 自动分配
-c: "comment" 注释

zaj:x:1001:1001::/home/zaj:/bin/bash
用户名 : 密码:用户组ID :注释:家目录 :解释器shell
密码 : 此处密码是密码占位不代表密码
解释器shell :等待用户进入系统后 输入指令之后  该解释器会收集用户录入的指令传给内核








修改用户
# usermod [选项] 用户名
-g:表示指定用户的用户组  选项值可以是 用户组id 或者用户组名
-G:附加组 选项值可以是 用户组id 或者用户组名
-u:用户 uid  用户的id (用户标识符) 系统默认会总500 自动分配
-l: 用户名  (可以修改用户名)


设置密码
#passwd 用户名

删除用户
#userdel [选项] 用户名
-r :表示删除的时候同时删除Home目录

如果用户已经登录  kill用户全部进程
#ps -ef|grep zaj

#kill 主进程的ID


切换用户
#su 用户名






用户组管理

root:x:0:
用户组名:密码:id:组内用户




添加用户组

#groupadd [选项] 用户组名
-g: 类似于 用户的-u  设置用户组ID




修改用户组
#groupmod [选项] 用户组名
-g: 类似于 用户的-u  设置用户组ID
-n: 类似与用户修改里的 -l 设置新的用户组名称

网络设置

网卡卡配置文件位置:
/etc/sysconfig/network-scripts/

ifcfg-ens33
ifcfg-lo

设置主机名

1.设置临时 主机名
#hostname 主机名

chkconfig

查看开机启动服务

#chkconfig --list

删除 服务 

#chkconfig --del 服务名


添加开机启动服务

#chkconfig --add 服务名


设置开机启动服务

#chkconfig --level [连在一起的启动级别] 服务名 [on 或 off]


例如设置apache 开机自动启动 #chkconfig --level 35 httpd on

ntp 服务

ntp 主要是对计算机的时间进行同步管理

查看时间
# date +"%F %T"


一次性 同步时间

#ntpdate 210.72.145.44
#ntpdate ntp.aliyun.com

自动同步时间

#service ntpd start

防火墙 firewalld

启动防火墙
#service firewalld start
关闭防火墙
#service firewalld stop

查看firewalld是否启动

#service firewalld status

一、条件防火墙是开启的

systemctl start firewalld

    1

1、查看防火墙的配置

firewall-cmd --state
firewall-cmd --list-all

2、开放80端口

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload    #重新加载防火墙配置才会起作用

3、移除以上规则

firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --reload

4、放通某个端口段

firewall-cmd --permanent --zone=public --add-port=1000-2000/tcp
firewall-cmd --reload

5、放通某个IP访问,默认允许

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.169 accept'
firewall-cmd --reload

6、禁止某个IP访问

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.42 drop'
firewall-cmd --reload

7、放通某个IP访问某个端口

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.169 port protocol=tcp port=6379 accept'
firewall-cmd --reload

8、移除以上规则

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.169" port port="6379" protocol="tcp" accept'
firewall-cmd --reload


9、放通某个IP段访问

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 accept'

rpm

类似于 软件管家
管理分为 查询 卸载 安装



 查询电脑某软件是否安装
#rpm -qa|grep [关键字]   

 卸载指定软件
#rpm -e 软件名称
选项: 
--nodeps  忽略依赖关系


安装指定软件
#rpm -i 软件名称
rpm -ivh

块状设备[挂载 解挂]:

查看:
# lsblk  查看块状设备



# mkfs [路径]   格式化盘符


挂载:
mount 设备原始地址 挂在路径  

解挂:
#umount [当前设备的挂载点]



mount /dev/sdd1 /BackHardDisk1

umount 只会让硬盘停止读写,不会休眠。

hdparm -Y /dev/sdd1
利用 hdparm让硬盘休眠

计划任务

#crontab  [选项]
-l : list  列表
-e : edit 编辑
-u : 指定用户 如果不指定就是当前用户
-r :remove 删除指定用户计划任务

计划命令 语法规则

详见百度 crontab 




分 时 日 月 周  和 需要执行的命令






取值范围 
分:0-59
时:0-23
日:1-31
月:1-12
周:0-6 0是周天

四个符号:
* : 表示取值范围 的每一个数字
- : 区间  例如 1-7
/: 每多少个  例如 想每10分钟一次   */10
,:表示多个取值  例如 1,2,3,4





例如每天的0.0分执行 reboot 指令 
0 0 * * * reboot


例如每十分钟执行一次
在时的位置写 */10  代表每十分钟


例如每小时的10分 20分 30分 钟执行一次
在时的位置写 10,20,30  代表每十分钟

问题1:

每月 1 .10 22日 的 4:55重启 network 服务

45 4 1,20,22 * * service network restart


真实案例 Centos7 测试

每隔1分钟 往 root 中的RT中 写入 当前时间:

执行的命令:
date +"%F %T"  >> /root/RT



分 时日月周 
1 * * * *  date +"%F %T"  >> /root/RT


注意事项 : 如果加上秒 他会提示不正确

权限操作

查看文件权限信息
#ls -l  等价于 #ll

#chmod 选项 权限模式 文档

选项:
-R 递归设置权限
权限模式:
该文档需要设置的权限信息

十位字符表示含义


第一位 文档类型

d表示文件夹 - 表示文件 l表示软连接 s表示套接字 等

第二到第四位

文档所有者权限情况
第二位 : r读权限 - 不可读
第三位 : w写权限 - 不可写
第四位 : x 可执行 - 不可执行

第五 到 第七位
表示所有者在同一个组的用户权限情况 
第五位 : r读权限 - 不可读
第六位 : w写权限 - 不可写
第七位 : x 可执行 - 不可执行

第八到第十位 除了前面两部分 其他用户的权限
第八位 : r读权限 - 不可读
第九位 : w写权限 - 不可写
第十位 : x 可执行 - 不可执行


设置权限

# chmod [选项] 文件或文件夹

-R 递归设置

设置 文件 RT 所有者  所有者所在组的成员  其他用户 权限  为可读 写 执行

chmod u+rwx,g+rwx,o+rwx  RT 

或

chmod a+rwx RT
:

软件安装

解压:

常用语法:
#tar -zxvf *.tar.gz
#tar -jxvf *.tar.bz2
选项含义:
-z 等价于 --gzip 或 --ungzip  :通过gzip指令处理文件
-x 等价于 --extract 或 --get :从文件中还原文件;  解压
-v :显示操作过程
-f 或 --file :指定一个文件
-j :支持bzip2 解压文件


yum

#yum list  列出当前电脑所有软件
#yum search 包名  搜索包
#yum [-y] install 包名  
#yum [-y] update [包名]    不指定包 更新全部软件
#yum [-y] remove 包名

Mysql 安装

#yum install mysql-server

shell

编写规范:

#!/bin/bash       告知系统shell解释器


文件命名规范

文件名.sh

expr

` expr  2 + 2 `

与或非 

! 非运算

-o 或 运算

-a 与运算


文件运算符

-b file  检测文件是不是块状设备

-c file 检测文件是否是字符设备文件

-d file 检测文件是不是目录

发短信

curl -i -k -X POST 'https://dfsns.market.alicloudapi.com/data/send_sms'  -H 'Authorization:APPCODE ba76ad162f6142bdba050f1b779d7d57' --data 'content=code%3A1234&phone_number=13145325870&template_id=TPL_0000'

Linux 查看外网IP 命名

curl ifconfig.me