Linux 常用命令

博客地址:https://www.cnblogs.com/zylyehuo/

查看系统发行版本

# 红帽版本
cat /etc/redhat-release

# 所有 Linux 系统
cat /etc/os-release

查看 Linux 命令的帮助信息

1.用man手册,linux提供的帮助文档
man ls
man cp
man mkdir   

2.命令加上 --help参数,查看简短帮助信息
mkdir --help
rm --help

3.在线的搜索一些命令查询网站
http://linux.51yip.com/

history

# 可以查看用户之前敲打的命令

# 可以用感叹号,加行号,快速执行之前的命令

vim 编辑器的用法

1. vim 需要单独安装
yum install vim -y  # 安装 

2. vim 打开一个不存在的文件,默认会创建此文件

# 用 vim 写一个 python 脚本,
# vim 的使用流程
第一步:vim first.py  ,此时会进入命令模式,按下字母 i,进入编辑模式
第二步:想要退出编辑模式,按下键盘的 esc,回到命令模式
第三部:此时输入 shfit+冒号,输入一个英文的冒号,进入底线命令模式 
第四步:输入 :wq!  ,write写入内容,quit退出vim  ! 强制性的操作
:wq!  强制保存写入退出vim
:q!  强制不保存内容,直接退出

3.此时可以查看一下文件内容
[root@s25linux tmp]# cat first.py
#!coding:utf-8
print ("你看这个灯,它又大又量")

4.如何执行这个脚本?
python first.py  # 即可执行脚本文件了

1.vim 文件名  # 此时进入命令模式,你敲击键盘的动作都会被识别是一个vim的命令 ,比如 a,i,o  进入插入模式

2.但凡进入插入模式之后,敲击键盘的动作就会被识别为是普通的字符串了

3.按下esc退出编辑模式之后,又进入命令模式了

4.输入 :wq!  保存vim的写入内容,然后退出vim,结束操作
# 在命令模式下,常用的指令 
$  快速移动到行尾
0  快速移动到光标的行首
x  删除光标所在的字符
g  移动到文件的第一行
G  移动到文件的最后一行 

/string    你要从文件开头寻找的内容,例如 /to   找出文件中所有的to字符,按下n键,跳转到下一个匹配的字符

?string     从文件的第行,向上搜索字符串信息   

%   找到括号的另一半 

yy   复制光标当前行 
3yy   复制光标后3行 
p    打印yy所复制的内容 
dd   删除光标所在行
4dd  删除光标向下的4行内容
dG   删除光标当前行,到行尾的所有内容
u  就是撤销上一次的动作 

# 如何快速的复制,打印生成多行内容 
例如按下 9999yy 就是复制9999行,然后按下p打印,就能够快速的复制N多行了...


# 底线命令模式下
:wq!
:q!  不保存退出
:数字   快速的定位到某一行
:set nu   显示vim的行号 

修改 Linux 的全局配置文件

1.名字叫做 /etc/profile,里面是shell脚本语言

2.编辑这个文件,写入你想永久生效的变量和值,系统每次开机都会读取这个文件,让其生效

vim  /etc/profile 
写入如下内容
###这是自定义的变量,每次开机都能够读取了,第一条是设置系统中文的变量
export LC_ALL=zh_CN.UTF-8  #打开注释,系统支持中文
#export LC_ALL=en_US.UTF-8  #打开注释,系统就支持英文了

文件目录增删改查操作

# 1.创建一个普通文本文件语法是 touch 文件名 
[root@bogon tmp]# touch music.txt

# 2.创建一个隐藏的文件,创建一个隐藏的 singer.txt
touch .singer.txt  # 创建隐藏文件 

# 3.创建一个文件夹,名字叫做s25
[root@bogon tmp]# mkdir s25

# 4.创建一个递归的文件夹,如 /s25/男同学 /s25/女同学 
mkdir -p /s25/男同学 /s25/女同学  # -p参数是 创建文件夹及其父文件夹

# 5.创建一个递归的文件夹 ,如 /s25new/男同学 /s25new/女同学
mkdir -p /s25new/{男同学,女同学}  # 创建一个/s25文件夹,且创建2个平级的文件夹

# rm命令,是remove的缩写,删除文件或是文件夹
rm 文件/文件夹  # 删除文件/文件夹 

rm test.txt  # 删除文件,默认有让用户确认删除的提示
rm -f test.txt  # 强制删除文件,不需要提示确认
rm -r 文件夹名  # 递归删除文件夹,及其内部的文件

#提问,如何强制性删除文件夹 ,以及其内部的资料
#这是一个危险的命令!!!!请理解后慎用!!!
rm -rf /*  # 叫做删库到跑路,万万不得敲。。。。
rm -rf ./*  # 强制性删除当前目录下的所有内容 

cd /home  # 切换修改到 /home目录下
ls .  # 查看相对的home目录下有什么内容

# 查询当前目录下的内容   ls命令 
# ls命令,就是list的缩写 
[root@bogon /]# ls .
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

# 查看文件夹中所有内容,以及隐藏的文件,在 linux 下,以.开头的文件,是隐藏的,默认直接看不到
[root@bogon tmp]# ls -a firefox_pyyu/  
 

tree

# 树的意思,以树状图显示文件目录的层级结构
# 确保你的机器可以上网 ,yum如同pip一样,自动的安装东西,解决依赖
# pip  是给python安装模块的工具
# yum  是给linux安装系统软件的工具
yum install tree -y  # -y默认yes同意安装  

[root@s25linux tmp]# mkdir -p a/b c/d

[root@s25linux tmp]# tree

echo

# echo命令如同python的print一样,能够输出字符串到屏幕给用户看
[root@s25linux tmp]# echo "感谢老铁送上的奥力给"
感谢老铁送上的奥力给


#linux在命令行的变量赋值,是临时生效的
#输出变量的值
#定义变量,中间没有空格
name="感谢老铁送上的飞机"   
#输出变量的值 

[root@s25linux tmp]# echo   $name
感谢老铁送上的飞机

cat

# cat 猫,用这个只猫瞄一眼  文件的内容
cat 文件名  

[root@s25linux tmp]# cat  first.py
print ("你看这个灯,它又大又量")

#读取内容,且显示行号
cat  -n  文件名 

#利用cat写入文件内容,写一首诗
[root@s25linux tmp]# cat >> second.py << EOF
> #!coding:utf-8
> print("爱的魔力转圈圈")
> EOF
[root@s25linux tmp]# cat second.py
#!coding:utf-8
print("爱的魔力转圈圈")

tac

从下往上读文件(cat 的翻版)

Linux 的重定向符号

>   # 重定向输出覆盖符  ,如同 python 的 with open 中的  w 模式 
>>	# 重定向输出 追加符  ,如同 a 模式 
<   # 重定向写入覆盖符,用的很少,用在数据导入等操作中, mysql 数据导入 
<<  # 用在cat命令中,很少见 

1.echo 输出一个字符串,内容不在屏幕上打印,写入到一个文件中
[root@s25linux tmp]# echo "左手跟我一起画个龙"  >  迪斯科.txt
[root@s25linux tmp]# echo "左手跟我一起画个龙"  >  迪斯科.txt
[root@s25linux tmp]# echo "左手跟我一起画个龙"  >  迪斯科.txt
[root@s25linux tmp]# echo "左手跟我一起画个龙"  >  迪斯科.txt
[root@s25linux tmp]# echo "左手跟我一起画个龙"  >  迪斯科.txt
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]# cat -n  迪斯科.txt
     1	左手跟我一起画个龙
     
2.追加写入文件内容
[root@s25linux tmp]# echo "右手和我划一道彩虹"  >>  迪斯科.txt

Linux 的管道符命令

1.过滤服务器上的进程信息

2.过滤服务器上的端口状态信息

ls

[root@bogon ~]# ls /tmp  # 这个命令表示,我要查看 /tmp 这个目录下的内容

sl

小火车

[root@localhost ~]# yum install sl -y
[root@localhost ~]# sl

cd

[root@bogon ~]# cd /home  # 目录切换,切换到 /home文件夹下

pwd

[root@bogon home]#pwd  # 能够输出当前所在的绝对路径 

whoami

[root@bogon home]# whoami  # 我是谁 

rm

# rm 命令 -f参数(强制性删除) /tmp/oldboy.txt  
rm -f /tmp/oldboy.txt 

cp

# 对于配置文件的修改,或者是代码文件的修改,防止突然写错了,复制一份
# 复制文件
[root@s25linux tmp]# cp 木兰诗.txt 新_木兰诗.txt

# 复制文件夹,复制文件夹需要添加 -r 递归复制参数
[root@s25linux tmp]# cp -r a new_a

mv

# mv 命令可以移动文件, 文件夹的路径
# mv 命令也能够进行重命名
1.重命名的功能
语法是
mv  旧文件名      新文件名  
[root@s25linux tmp]# mv  木兰诗.txt      new_木兰诗.txt

2.移动位置 
语法
mv 你要移动的文件或是文件夹 移动之后的目录名(如果文件夹存在,则移动,不存在是改名)

案例
mv test.txt b  # 移动 test.txt 文件  到 b 文件夹下(b文件夹得存在)

alias

alias  # 直接输入可以查看当前系统的别名 

# 案例: 给系统添加一个别名
# 当你敲下 start 就是在执行后面的长串命令,很方便 
alias start="python3 /home/mysite/manager.py runserver 0.0.0.0:8000"

find

# 可以用于搜索机器上所有的资料,按照文件名字搜索,linux 一切皆文件

find 你要从哪找 -type 你要的文件类型是什么 -size  你要的文件内容多大 -name 你要的内容名字是什么
-type  f  # 是找普通文本文件 
-type  d  # 是找 文件夹 类型 
-name  # 是指定文件的名字内容 

#在系统上全局搜索,所有的.txt文件
find / -name "*.txt"

#指定在etc目录下,进行局部搜索,一个网卡配置文件,网卡名字是以 ifcfg 开头的 ,文本类型文件
find /etc -type f -name "ifcfg*"

1.准备好测试的数据,在/tmp目录下
mkdir  /tmp/python{1..5}  #在/tmp目录下 创建 出 python1  ptyhon2 ... python5 
touch  /tmp/python_{a..d}  #在/tmp目录下创建出 python_a   ptyhon_b ..  python_d  几个文件

2.查看准备好的测试文件 
[root@s25linux tmp]# ls
python1  python3  python5   python_b  python_d
python2  python4  python_a  python_c

3.在 /tmp 目录下练习find命令

4.找出/tmp目录下所有的pyton相关内容
[root@s25linux tmp]# find . -name "python*"
./python1
./python2
./python3
./python4
./python5
./python_a
./python_b
./python_c
./python_d

5.找出 /tmp 下所有的 python 相关的文件
[root@s25linux tmp]# find . -type f -name "python*"
./python_a
./python_b
./python_c
./python_d

6.反之找出所有的文件夹
find . -type d -name "python*"

7.全局搜索,超过10M大小的 txt文本
[root@s25linux tmp]# find / -size +10M -name "*.txt"
/tmp/python2.txt
/tmp/python3.txt

查看文件,文件夹大小

ls -lh  
# -h 参数,是显示文件单位,以 kb  mb gb 大小为单位, -l 是列表形式,列出文件夹中详细信息

grep(三剑客之一)

grep 是 linux 强大的三剑客之一,从文本中过滤有用信息的命令

用法一

grep "你想过滤的字符串" 需要过滤的文件
# 准备一个测试的文件 test.txt
[root@s25linux tmp]# cat test.txt
跟着我左右右手一个慢动作



#左右右手慢动作重播


一个大西瓜,送给你,也不送给他

ALLOW_HOSTS=[]

# 过滤文件中的相关内容
#找出文件中含有 "大" 字的行,且显示此内容,在哪一行
grep -n "大" test.txt   # -n 参数是显示行号

#忽略大小写,找出 ALLOW_HOSTS=[] 参数是否被修改
grep -i "al"  test.txt 

# 过滤出此文件非空白行,如何操作?
# 拆解如下
# 找出所有的空白行 
[root@s25linux tmp]# grep "^$" test.txt  # "^$" 以空开头,以空结尾,因此是空白行
# -v 参数是翻转过滤结果 ,找出空白行以外的内容
[root@s25linux tmp]# grep -v "^$" test.txt

#过滤掉注释行和空白行,如何操作?
[root@s25linux tmp]# grep -v "^#" test.txt | grep -v "^$"
跟着我左右右手一个慢动作
一个大西瓜,送给你,也不送给他
ALLOW_HOSTS=[]

用法二

cat 文件 | grep "你想要的内容"
# 找出linux的用户信息文件中有关 pyyu 的行信息 /etc/passwd

[root@s25linux tmp]# cat /etc/passwd | grep "pyyu"
pyyu:x:1000:1000:pyyu:/home/pyyu:/bin/bash 

sed(三剑客之一)

批量修改的命令

是用于文本内容处理的强大命令,可以直接替换文件中的内容
类似notapad++的全局替换功能

# sed命令 -i参数是把替换结果写入到文件
# 's/127.0.0.1:8000/10.0.0.129:9000/g'     
# s是替换指令  /你要替换的内容/替换之后的内容/   g是全局替换,global的意思
sed -i 's/127.0.0.1:8000/10.0.0.129:9000/g' src/restful/api.js

需求:sed命令截取出ip地址

ifconfig ens33 | sed -n '2p' | sed 's#^.*inet ##g' | sed 's#  netmask.*$##g'
# 答案拆分解释
# 第一步:-n 是取消sed的默认输出,'2p' 打印第二行的内容
[root@s25linux ~]# ifconfig ens33  |  sed  -n '2p'  
        inet 192.168.178.143  netmask 255.255.255.0  broadcast 192.168.178.255

# 第二步:针对第二行的内容,再次处理
 sed 's/.*inet//g'    
 sed 的替换功能  s是替换模式  's/你想替换掉的内容/替换之后的内容/'
 's/把inet一直到ip地址的内容/空/g'   
 's/.*inet//'  把任意内容到inet的字符串,替换为空
[root@s25linux ~]# ifconfig ens33 |  sed -n '2p'  |  sed 's/.*inet//g'
 192.168.178.143  netmask 255.255.255.0  broadcast 192.168.178.255

# 第三步:再次处理
[root@s25linux ~]# ifconfig ens33 | sed -n '2p' | sed 's#^.*inet ##g' | sed 's#  netmask.*$##g'
 192.168.178.143

awk(三剑客之一)

awk命令用于对字符串的专业格式化

需求:awk命令截取出ip地址

[root@s25linux ~]# ifconfig ens33  |  awk 'NR==2 {print $2}' 
192.168.178.143

head、tail

# head 和 tail 都是能够读取文件内容的

head 文件名  # 默认从文件的前10行看
head /etc/passwd  # 默认看前10行
head -3 /etc/passwd  # 查看文件的前3行

tail 文件名  # 默认从文件的后10行看
tail -2 /etc/passwd  # 查看文件的后2行
tail 命令的实时监控用法,可以用于检测线上的日志文件,检测用户的请求信息
tail -f 文件名  # 实时刷新文件内容 
tail -f /tmp/test.txt  # 能够检测文件内容的变化

scp

在2台 linux 机器 (macos) 之间,通过网络安全的传输文件,文件夹

# 登录的是 机器1
# 需求1:将机器1的 /tmp/好嗨哦.txt  发送到 机器2的 /tmp目录下 
[root@s25linux tmp]# scp /tmp/好嗨哦.txt root@192.168.178.235:/tmp/

# 需求2:把机器2的 /tmp目录下的资料给拿到本地的 /opt目录下
scp 你想要的内容 内容发送到哪里 
scp root@192.168.178.235:/tmp/小样别偷看.txt /opt/

# 登录的是 机器2

#【把别人的资料拿来】
# 案例1:我想拿到机器1的 /opt/test.txt  拿到机器2的 /tmp目录下
scp 我想要的内容 内容存放的地点
scp root@192.168.178.134:/opt/test.txt /tmp/

#【把自己的资料发给别人】
# 案例2:我想把本地的 /home/fisrst.py 发送给机器1的 /home目录下
scp /home/first.py 账号@机器1:/home/
scp /home/first.py root@192.168.178.134:/home/  

# 如果发送的是整个文件夹,就得加上 -r 递归的拷贝参数
[root@s25linux tmp]# scp -r ./lol root@192.168.178.235:/tmp/

# 用通配符发送多个文件
[root@s25linux tmp]# scp -r ./* root@192.168.178.235:/tmp/134bak/

du

du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强

# 统计/var/log/文件夹大小 
du -sh /var/log/  

#显示当前目录下所有文件的大小
[root@s25linux tmp]# du -h ./*

top

Linux 的资源管理器

第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载

第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数

第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比

第四行:内存信息(与第五行的信息类似与free命令)
total:物理内存总量
used:已使用的内存总量
free:空闲的内存总量(free+used=total)
buffers:用作内核缓存的内存量

第五行:swap信息
total:交换分区总量
used:已使用的交换分区总量
free:空闲交换区总量
cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

ps

用于查看 linux 进程信息的命令

ps -ef  # -ef,是一个组合参数,-e  -f 的缩写,默认显示linux所有的进程信息,以及pid,时间,进程名等信息 

# 过滤系统有关vim的进程 
[root@s25linux ~]# ps -ef | grep "vim"
root      24277   7379  0 16:09 pts/1    00:00:00 vim ps是怎么用的.txt
一个django运行后,如何验证django是否运行了,它会产生些什么内容?
能够产生日志,检测到用户的请求,说明django运行了
查看端口情况,django会占用一个端口 
产生一个python相关的进程信息 

kill

杀死进程的命令

kill 进程的id号

# 如果遇见卡死的进程,杀不掉,就发送 -9 强制的信号 

kill -9 pid

netstat

查看 linux 的网络端口情况

常用的参数组合  -t -n -u -l -p    

[root@s25linux tmp]# netstat -tunlp  # 显示机器所有的tcp、udp的所有端口连接情况

# 例如验证服务器80端口是否存在
netstat -tunlp | grep 80

# 过滤3306端口是否存在 
netstat -tunlp | grep 3306

# 过滤 ssh 服务是否正常
[root@s25linux tmp]# netstat -tunlp | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1147/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1147/sshd

# 有些公司为了保护服务器安全,更改了默认的远程连接端口
# ssh端口 26674    ip 是  123.206.16.61   账号是 xiaohu   密码是 xiaohu666
# 怎么登陆服务器呢?用如下的命令去连接服务器 
ssh -p 26674 xiaohu@123.206.16.61  
ssh -p 22 root@192.168.178.134
root@192.168.178.134's password:

Linux 用户管理

组的概念

权限控制,其实控制的就是,不同的组,不同用户,针对不同的文件夹,文件操作权限的不同

root 用户

root为什么叫root,是因为系统提出了UID的概念,用户id号,用户id为0的就是系统的超级用户

普通用户

普通用户由root用户创建,默认的UID是从1000开始进行累计,权利很低

默认用户家目录都在/home
例如
/home/pyyu/
/home/alex/
/home/wupeiqi/

id

查看用户的账户信息的命令

id  root 
[root@s25linux tmp]#  id  root
uid=0(root) gid=0(root) 组=0(root)

id  caixukun
[root@s25linux tmp]# id caixukun
uid=1004(caixukun) gid=1004(caixukun) 组=1004(caixukun)

用户增、删、改

添加删除用户,注意的是,涉及到权限的修改,只能用root去操作,其他普通用户基本上没权限

useradd

useradd caixukun  # 创建普通用户 caixukun,系统会在/etc/passwd文件中,增加一行用户信息,且同时创建了一个用户组也叫 caixukun,存放在 /etc/group 文件中

passwd

passwd caixukun  # 给用户修改密码

userdel

userdel caixukun  # 删掉caixukun这个用户

userdel -rf caixukun  # 删除用户,且删除用户的家目录

用户登录切换

su

su - 用户名  # 用户登录切换,普通用户切换,需要输入密码,root用户想干嘛都不需要密码
# 这个减号必须加上,叫做完全的环境变量切换,是正确的切换方式
su - pyyu
su - root

管理员命令

sudo

# 1.当pyyu用户,想要进入/root文件夹,发现权限不够,怎么办

# 思路1:
# 使用sudo命令,默认以root身份去执行命令
sudo cd /root

# 思路2:
# 把pyyu用户,加入到root组里,也就拥有了root组的权限,但是还是得查看这个group的权限

# 思路3:
# 直接修改/root文件夹的权限,允许其他人,也可以读写执行 ,其他人也就能够进入到/root文件夹了

sudo 命令使用配置流程

# 1.使用visudo命令,修改配置文件,添加你允许执行sudo命令的用户
visudo  # 打开文件后,找到大约在91行的内容,修改为如下
     91 # Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 pyyu    ALL=(ALL)       ALL

# 2.保存退出之后,即可使用sudo命令了
sudo ls /root  

chmod

chmod 可以更改文件的权限,更改针对 user,group,other的权限修改

chmod  u+r   file.txt  #给文件的user,添加读的权限
chmod  g-x  file.txt  #给文件的group组权限,去掉可执行
chmod o+r,o+w,o+x  file.txt  #给文件的other身份,最大的权限,读写执行
chmod 000  file.txt  #给与文件最低的权限,任何人不得读写执行

chown

change owner 缩写

更改文件的拥有者,user

chown 新的属主 file.txt

chgrp

更改文件的拥有组,group

change group 缩写

chgrp 新的属组 file.txt

软连接

类似 windows 的快捷方式

# 创建命令
ln -s 目标文件绝对路径 软连接绝对路径
[root@s25linux tmp]# ln -s /tmp/test.txt /opt/t.txt  # 给/tmp/test.txt创建一个快捷方式,放在/opt/t.txt 这里

# 删除快捷方式,删除软连接是不会影响源文件的
# 例如 windows 下装一个qq在 D:\qq\qq.exe ,发送快捷方式到桌面   

tar

打包、压缩、解压缩

打包,不节省空间

压缩,节省磁盘空间

使用相对路径

# 功能参数
-z   # 调用gzip命令,对文件压缩 ,加上这个参数,才会节省磁盘空间
-x   # 解包,拆快递
-v   # 显示整个过程
-f   # 必须写在参数结尾,指定压缩文件的名字 
-c   # 打包,收拾快递

# 压缩文件的后缀,本没有意义,只是告诉别人,这个文件是用什么命令压缩/解压缩
*.gz   # gzip命令解压缩
*.tar  # 用tar命令解压缩
*.xz   # 用xz命令解压
*.zip  # 用unzip命令解压

案例1:打包/opt/目录下所有的内容,打包生成tar包allopt.tar

# 第一步:打包 /opt/ 下所有内容
[root@s25linux opt]# tar -cvf allopt.tar ./*

# 第二步:解包这个 tar 包
[root@s25linux opt]# tar -xvf allopt.tar ./

案例2:打包,且压缩 /opt 目录下所有内容,生成tar.gz包allopt.tar.gz

# 第一步:打包,且压缩,就是加一个-z参数即可
[root@s25linux opt]# tar -zcvf allopt.tar ./*

# 第二步:解压缩,常见的*.tar.gz,也有人会缩写成  *.tgz ,都可以如此的去解压缩
[root@s25linux opt]# tar -zxvf allopt.tar.gz ./

补充

# 疑问:必须先打包再压缩吗?能对一个文件夹直接压缩吗?
# 解答:打包,压缩是一体的,是调用tar命令,加上-z参数,自动就压缩了
tar -zcvf dir.tar.gz ./testdir/  # 压缩此文件夹,放入到一个压缩文件 dir.tar.gz中
# .gz是压缩的常见后缀格式

systemctl

systemctl是用于在centos7管理系统的各种软件,服务的命令,常用指令如下

systemctl status redis  # 查看redis服务的状态
systemctl start redis
systemctl stop redis  
systemctl restart redis  
systemctl enable redis  # 设置redis开机自启
systemctl disable redis  # 禁止redis开机自启 

补充

systemctl  # 这是centos7
systemctl start ngixn  # 7系列这么启动

service  # 这是centos7以下系列系统,使用的命令
service nginx start  # 6系列启动命令

防火墙

用于控制服务器的出/入流量

防止恶意流量攻击服务器,保护服务器的端口等服务。

在学习阶段是直接关闭的,专业的运维人员需要学习 iptables 软件的一些指令

# 云服务器,默认都有一个硬件防火墙,以及软件防火墙(iptables、firewalld)
# 在服务器上,运行了django服务,如果开启了防火墙服务器,且没有自定义规则,默认是拒绝所有外来流量 ,导致我们windows无法访问到linux运行的django等程序

# 1.清空防火墙规则
iptables -F #清空防火墙规则

# 2.关闭防火墙的服务
systemctl stop firewalld  #关闭防火墙服务
systemctl disable firewalld  #禁止防火墙开机自启

DNS 域名解析

# dns解析系统-------手机上的电话簿------- 小王----132xxx      小莉---186xxxx

# dns服务器,存储了公网注册的所有(域名----ip)对应的解析关系

# linux的dns客户端配置文件/etc/resolv.conf
# 里面定义了主备的两个dns服务器地址
[root@s25linux ~]# cat /etc/resolv.conf
# Generated by NetworkManager
# search localdomain
nameserver 119.29.29.29
nameserver 223.5.5.5

# linux 的本地 dns 强制解析文件  /etc/hosts,可以写入一些测试的域名,用于本地机器使用,域名解析优先级更高
[root@s25linux ~]# cat  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1  pythonav.cn

nslookup

域名查找命令

nslookup www.pythonav.cn  # 寻找dns对应关系

浏览器输入url之后,是怎么解析的?发生了什么事?

浏览器里面输入 www.pythonav.com发生了什么

1.浏览器进行dns查找,解析域名对应的ip机器,找到之后浏览器访问此ip地址 
2.用户请求,发送到了服务器之后,优先是发给了nginx(web服务器),用户请求的是静态资源(jpg,html,css,jquery)nginx直接从磁盘上找到资料给与用户查看
如果nginx检测到用户请求是一个动态请求,登录,注册,读取数据库,例如 .php  例如 .aspx ,通过url匹配发现是动态请求,转发给后端的应用服务器(php,tomcat,django)
3.django处理完用户的动态请求之后,如果发现需要读取数据库,再通过pymysql向mysql读取数据
4.如果django处理请求,发现读取的是redis,再通过pyredis向redis拿数据
5.django处理完毕之后,返回给nginx
6.nginx返回给用户浏览器
7.浏览器渲染数据之后,给与用户查看页面 

大型网站技术架构,很nb,好好看,面试可劲吹

crontab

crond定时任务服务,提供了一个客户端管理命令crontab

crontab -e  # 编辑定时任务配置文件

crontab -l  # 查看定时任务的规则

# 定时任务,注意的是几号和星期几不得共用
# 1.每分钟,将一句话,追加写入到一个文件中
第一步:crontab -e  #打开配置文件
写入如下内容,用的是vim编辑器命令
*  *  *  *  *  /usr/bin/echo  "有人问王思聪,钱是万能的吗?王思聪答:钱是万达的" >>  /tmp/wsc.txt

# 2.检查定时任务
crontab -l

定时任务的语法规则

*    *    *    *   *     命令的绝对路径
分   时   日   月  周  
3,5  *    *    *   *     # 每小时的第3,第5分钟执行命令
15   2-5  *    *   *     # 每天的2点一刻,3点一刻,4点一刻,5点一刻,执行命令

每天8.30上班
30   08   *    *   *     # 去上班

每天12下班回家睡觉
00   00   *    *   *     # 回家睡觉

# 每分钟执行一次命令
*  *   *  *  *   命令的绝对路径
分 时  日 月 周  

# 每小时的3,15分钟执行命令
*     *  *  *  *   命令的绝对路径
分    时 日 月 周  
3,15  *  *  *  *   命令的绝对路径

# 在上午8-11点的第3和第15分钟执行
*      *     *  *  *   命令的绝对路径
分     时    日 月 周  
3,15  8-11   *  *  *   命令的绝对路径

# 每晚9:30执行命令
*    *   *  *  *   命令的绝对路径
分   时  日 月 周  
30   21  *  *  *   命令的绝对路径

# 每周六、日的下午1:30执行命令
*   *   *  *   *   命令的绝对路径
分  时  日 月  周  
30  13  *  *  6,7  命令的绝对路径

# 每周一到周五的凌晨1点,清空/tmp目录的所有文件,注意执行的命令请用绝对路径,否则会执行失败
*  *   *  *   *   命令的绝对路径
分 时  日 月  周  
0  1   *  *  1-5  /usr/bin/rm -rf /tmp/*  

# 每晚的零点重启nginx
*  *   *  *   *   命令的绝对路径
分 时  日 月  周 
0  0   *  *   *   /usr/bin/systemctl  restart nginx  

# 每月的1,10,22日的4:45重启nginx
*   *   *         *   *    命令的绝对路径
分  时  日        月  周  
45  4   1,10,22   *  *     /usr/bin/systemctl  restart nginx  

# 每个星期一的上午8点到11点的第3到15分钟执行命令
*      *      *   *   *   命令的绝对路径
分     时     日  月  周 
3-15  8-11    *   *   1   命令的绝对路径 

注意事项

# 记住一句话,服务器上操作,用绝对路径,基本不会出错了,除非手误,单词写错了
# 能用绝对路径,别用相对路径!

Linux 软件包管理

windows 的软件管理,安装文件的后缀 *.exe
macos 的应用程序安装后缀  *.dmg
linux 的二进制软件包后缀  *.rpm

linux平台的软件安装形式,有3个

- 源代码编译安装,此方式较为麻烦,但是可以自由选择软件的版本(因为是去官网下载最新版本代码),也可以扩展第三方额外的功能(五颗星)
  - 扩展第三方功能
  - 指定软件安装目录
- rpm包手动安装,此方式拒绝,需要手动解决依赖关系,贼恶心(两颗星)
- yum自动化安装软件,需要配置好yum源,能够自动搜索依赖关系,下载,安装,处理依赖关系(五颗星)
  - 不好的地方在于,yum源仓库的软件,版本可能较低
  - 无法指定安装路径,机器数量较多的时候,不容易控制

更换 yum 源

yum源的默认仓库文件夹是 /etc/yum.repos.d/,只有在这个目录第一层的*.repo结尾的文件,才会被yum读取

# 1.下载 wget 命令
yum install wget -y   # wget命令就是在线下载一个url的静态资源

# 2.备份旧的 yum 仓库源
cd /etc/yum.repos.d
mkdir repobak
mv *.repo repobak  # 备份repo文件

# 3.下载新的阿里的yum源仓库,阿里的开源镜像站https://developer.aliyun.com/mirror/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 4.继续下载第二个仓库 epel仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 5.此时已经配置完毕,2个新的yum仓库,可以自由的嗨皮,下载软件了
[root@s25linux yum.repos.d]# ls
CentOS-Base.repo epel.repo repobak

# 6.下载一个redis玩一玩
[root@s25linux yum.repos.d]# yum install redis -y  # 就能够自动的下载redis,且安装redis

# 7.此时可以启动redis软件了,通过yum安装的redis,这么启动
systemctl start redis   

# 8.使用redis的客户端命令,连接redis数据库
[root@s25linux yum.repos.d]# redis-cli
127.0.0.1:6379> ping
PONG

curl

# 获取网站的响应源代码 
curl 网址

# 获取网站的响应头数据
curl -I 网址

停止supervisor以及uwsgi

# 1.必须得先停止supervisor才可以停止uwsgi
pkill -9 supervisor

# 2.杀死uwsgi
pkill -9 uwsgi

# kill命令,是基于pid杀死进程,如 kill 5888
# pkill命令, 是基于进程的名字,杀死进程,如 pkill uwsgi 
posted @ 2023-09-04 14:51  zylyehuo  阅读(132)  评论(2编辑  收藏  举报