linux

江枫思渺然 提交于 2019-12-03 07:59:01

linux 操作系统

企业版vmware vsphere esxi服务器

在线下载资源 wget命令 ,需要安装

自动下载文件的自由工具

yum install wget

img

常识

快捷键

xshell快捷键
logout 命令退出
ctrl+d 退出用户登陆
ctrl+shift+f 快速登陆

知识点

登陆默认显示相对路径
不区分的空格 多少空格都可以
后面.文件后缀只是文件标识
查找以什么开头^
以什么结尾 $
查找空白符 ^$  
掌握普通用户登录后系统的提示符:$
掌握root用户登录后系统的提示符:#
Linux终端也称为虚拟控制台,Linux终端采用字符命令方式工作,用户通过键盘输入命令,通过Linux终端对系统进行控制
Linux是一个多用户、多任务、支持多线程和多CPU的操作系统
默认端口号
ftp:23
dns:53
http:80
https:443
ssh:22

NAT模式

电脑宿主机的ip在局域网内是唯一的,选择了NAT模式创建虚拟机,虚拟机就是一个新的局域网

img

桥接模式

用此模式,就是局域网中一台独立的主机,它可以访问该类网段任意一台机器,

img

仅主机模式

单机模式

 yum 装软件


ifconfig 查看网络路径

lo:本机回环

ens33 inet 连接外网的地址

查看帮助

    命令 --help
        ls --help 
        
    -用man帮助手册 
        man  ls 

    -去寻找在线的linux解释中文网站  http://linux.51yip.com/search/ls

概念性的理解

1.Linux内置解释器bash 相当于pyhon解释器
2.Linux的内部大多是使用python去书写

云计算

1.只需要 花钱,买腾讯,阿里云服务器 
2.专人维护
缺点 容易信息数据泄露

文件目录结构

linux和window的区别

蓝色是文件夹的意思 
绿色 chmod 777 test(文件名)
ls usr/bin 二进制可以执行命令

Linux不像Windows那样的系统目录,Linux使用正斜杠"/"而不是反斜杠""来标识目录。

Windows目录:

img

Linux目录:

/opt 第三方模块
/etc 放置配置文件
/root  存放root的信息 

/home   /etc  /var  

树形结构 

根目录是  斜杠  /

所有目录都是以根目录为开头

目录中间的斜杠是,目录分隔符 

img

Linux首先是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。

img

img

img

ls / 查看根

linux起步

虚拟机设置

1.首先创建centos 下载

查看ip路径 ip  addr 可以简写成 ip a

设置一下网络连接和磁盘

Linux一切皆文件
2.ipconfig 不能在centos中使用 使用步骤
    配置好网络后,安装网络工具包
    yum install  net-tools  -y  #
    就可以使用
3.如果使用ifconfig看不到ip地址的话,那就得重启网络服务

    3.1重启网络的步骤
        -确保配置文件正确配置
        vim /etc/sysconfig/network-scripts 

    确保onboot=yes即可

    3.2重启网络服务 
    systemctl  restart  network   

远程连接linux

1.下载Xshell
2.命令:ssh ip  (默认22端口)
host only 仅主机 单机模式,了解即可
电脑pc   >  皇帝
虚拟机   >   老百姓

老百姓被皇帝控制,无法与外届通信





nat模式(网络地址转换)
电脑pc  >    皇帝
nat     >    宰相
虚拟机    >    老百姓

老百姓的房子是宰相分配的 与皇帝无关
虚拟机的ip是nat分配的,电脑环境无论怎么变化,都不会影响虚拟机
好处:
在家,在学校,在公司,使用虚拟机,ip地址都不会变化

桥接
电脑pc    >    皇帝
虚拟机   >    老百姓
只要更换了一波皇帝,老百姓房子都得换
只要换了个教室,插上网线,ip就变了
好处:不用配置
坏处:更换ip麻烦

概念 硬件介绍

虚拟环境 是主机本体''分身''出的多个环境

redis缓存数据库 放入数据库

云计算用于 服务器的租赁

XSHELL 和 虚拟机linux进行关联

#登陆服务器
ssh 用户名@路径 
快捷登陆  
ctrl+shift+f#登陆之后使用 
ctrl+d 快速退出
        

远程连接

18.查看linux网络端口的命令

netstat  -tunlp  

参数解释:
    netstat [选项]
    -t或--tcp:显示TCP传输协议的连线状况;
    -u或--udp:显示UDP传输协议的连线状况;
    -n或--numeric:直接使用ip地址,而不通过域名服务器;
    -l或--listening:显示监控中的服务器的Socket;
    -p或--programs:显示正在使用Socket的程序识别码和程序名称;
    -a或--all:显示所有连线中的Socket;

    #案例
    检查服务器的80端口是否打开

    netstat  -tunlp  |  grep 80  

    #安装nginx,且运行nginx,打开80端口
    #安装   yum install  nginx  -y  
    #启动   通过yum安装的软件,都可以通过系统服务管理命令,去启动,无论是nginx 还是mariadb等
    systemctl  start/stop/restart/status  nginx  
    #注意关闭防火墙的命令
    systemctl stop  firewalld       #停止防火墙服务 
    systemctl disable  firewalld    #停止防火墙开机自启

    iptables -F     #清空防火墙规则  

查看主机名

hostname 查看主机名
hostnamectl set-hostname 新的主机名

修改 linux命令提示符

echo $PS1  查看命令提示符的
用于修改每次显示的权限
示例
#PS1='[\u@\h \t \w]\$'
[root@localhost 04:22:10~]
#\u@\h \w
PS1='[\u@\h \t \w]\$'
\u当前登陆用户
\h当前主机名
\t当前系统事件
\w输出绝对路径
\W 输出工作路径的最后以为

语法操作

>       #重定向覆盖输出符    如同python的  with open  w模式 
>>      #重定向追加输出符    a 模式 
<       #重定向写入覆盖符       用在mysql数据导入 
<<      #不常用 
echo 24{1..6}> b.py#覆盖写
cat b.py -n 查看数据并显示行数
echo 24{1..6}>> b.py#添加写
cat b.py -n 查看数据并显示行数
顶点(跟)路径是绝对
不是顶点(根)路径是相对

用户管理 权限

组操作

1.创建组
groupadd  test
增加一个test组
2.修改组 
groupmod -n test2  test 
将test组的名子改成test2
3.删除组 
groupdel test2 
删除 组test2
4.查看组 
    4.1 查看当前登录用户所在的组 groups
        groups someuser
        查看apacheuser所在组
    4.2 查看所有组
    cat /etc/group 

sodu管理员权限

使用sodu权限要修改文件
visudo 编辑sudoers文件

写入
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chaoge  ALL=(ALL)       ALL   
esc :wq保存
#允许chaoge在任何地方,执行任何命令
用于 需要sudo ls /root  以root身份去运行
sodu知识点扩展
sudo 【选项】【参数】
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

用户分类

root 最高用户
个root管理员就是所有UNIX系统中的超级用户,它拥有最高的系统所有权,
2.查看所有用户组 cat /etc/group
3.cat /etc/passwd 可以查看所有用户的列表
    cat /etc/passwd|grep 用户名 #这条命令可以用来精确查找某个用户
sudo命令 管理员权限
普通用户

系统管理员UID为0
系统自带用户是1-999
普通用户是1000之后
etc/passwd 用户信息文件
4.$符号是普通用户命令提示符,#是超级管理员的提示符

创建用户

创建用户的的同时会创建用户组GID

cx 用户名

useradd cx #创建用户cx 创建用户组cx
passwd cx 
#查看当前用户
whoami
普通用户可以在临时文件 
创建 /tmp默认是临时文件
passwd  用户名   #更改用户密码

查看用户的id属性

uid=0(root) gid=0(root) groups=0(root)
u 当前用户id 
gid 用户组id
groups 组 

参数

tty    查看当前终端
who am i 仅显示当前用户正在使用的终端和登录时间
w        
查看所有终端(功能最全,显示用户名,终端标记,登录时间,负载等信息)
id 用户名 #查看用户的id 和组id

切换用户

su username #切换用户
su - 用户名 #切换用户
用户环境变量 
完全切换到新的用户


·····························
root 切换普通不需要密码
su - 普通用户名
普通 切换root需要密码
su - root

删除用户

userdel -rf cx 完全删除用户
-f     强制删除用户
-r    同事删除用户以及家目录

退出登陆

#先看下当前用户(我是谁)
whoami
#切换用户
su - oldboy
#退出用户登录
logout
ctrl + d

文件夹权限

什么是权限
在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。
对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录

root不会被权限挡住(无视权限)

用户分为三个等级
u (user)属主
g (group)属组
u (others)其他用户(不是属主也不是属组)
- 第一个符号是文件类型
文件是- 文件夹是d
查看权限
Linux权限的观察
使用一条命令查看权限
ls -l /var/log/mysqld.log 

img

1.权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
2.文件链接数
3.文件拥有者-属主
4.文件拥有组-属组
5.文件大小
6.最后一次被修改的时间日期
7.文件名 
文件类型
-    一般文件
d    文件夹
l    软连接(快捷方式)
b    块设备,存储媒体文件为主
c    代表键盘,鼠标等设备
文件权限
r    read可读,可以用cat等命令查看
w    write写入,可以编辑或者删除这个文件
x    executable    可以执行
目录权限
r    可以对此目录执行ls列出所有文件
w    可以在这个目录创建文件
x    可以cd进入这个目录,或者查看详细信息

img

清空权限命令

chmod 0 清空所有人的权限

img

参数

ls-l 当前文件夹下的详细信息 简写ll
chmod 修改权限
chmod 用户+权限 文件名
chmod o+w 文件名
chmod 可以直接修改数字权限
r4 w2 x1  7

文件权限

文件的读写执行是:
    顺序必须是 读写执行 
    r  read   读
    w   write  写 
    x    exec可执行 
    -   没有权限 
参数详细介绍
[root@s24_linux tmp]# ls -l  
#ll
total 0
-rw-r--r--. 1 root root 0 Oct 27 16:36 gg.txt   

 -   这是一个普通文件,   d  代表文件夹  l 代表软连接快捷方式 

 rw-(users   属主的权限 )  读  写  权限 

 r--(group   属组的权限,在这个组里面的人,都有)    只读的权限 

 r-- (  others   当前登录的用户,和这个文件没关系,就是其他人的身份权限)   只读的权限
修改用户权限

chmod

chmod [身份]   [参数]   [文件]
    u(user)   +(添加)  
    g(group)   -(减去)
    o(other)  =(赋值)
    a(all)
增加删除权限
方法一
u user用户 o 其他人权限 g 
chmod  (chang  mode)  #修改权限
chmod  u+x  filename  #给文件的user用户,添加x可执行权限
chmod o-r gg.txt   #给其他人去掉r的读取权限 
方法二 权限与数字转化
属主添加可读可写可执行权限
chmod 700 pyyu.txt
属主可读可写可执行
属组可读可执行
其他人可读可执行
chmod 755 pyyu.txt
文件和文件夹的读写执行
1.文件的读写执行 
    r   cat   more less  读取文件内容 
    w   vim   echo追加  编辑文件内容
    x   可以执行的文件 

2.文件夹的读写执行 

    r   ls  
    w   在文件夹中 mkdir  或者touch等创建文件,必须有x权限才行
    x    可以cd进入文件夹 
切换属组
chgrp   wy   filename.txt   
#修改文件的属组为wy组 
修改文件属主
chown  wy  filename.txt  #修改文件的主人是 wy 
加入组
usermod -G 想要加入的组名 加入的组名
#加入组 需要退出会话,重新登陆才能生效
usermod -G gg wy
#把wy组加入gg组

在文件中yy 是复制 p是打印

chagrp 换组

touch创建文件

touch xxx.py
    1.如果文件已经存在,修改文件的访问时间
    
    2.如果文件不存在,则创建这个文件

cat写入创建文件

cat -n ''
EOF 文件结束标识符
tac 倒序输出
解压 zxvf


[root@localhost tmp]# cat >> music.txt  <<EOF
    > 左手根我一起画个龙
    > 右手捧着一个大碗面
    > EOF
    #在每一行的结尾加上$符
[root@master tmp]# cat -E 1.txt

mkdir

mkdir oldoy(文件夹名) 创建文件夹
mkdir -p oldoy/3344/oopp 

sed处理字符的命令

s是替换模式 g 全局替换 -i插入
sed "s/替换的字符/替换成的/g" 路径

示例

找到passwd文件中所有的root替换为大写的ROOT
sed -i "s/root/ROOT/g" passwd 

知识点补充

sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

命令格式

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
选项

-e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
-f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
-h或--help:显示帮助;
-n或--quiet或——silent:仅显示script处理后的结果;
-V或--version:显示版本信息。
-i ∶插入, i 的后面可以接字串
sed命令

a\ 在当前行下面插入文本。
i\ 在当前行上面插入文本。
c\ 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。  
W file 写并追加模板块的第一行到file末尾。  
! 表示后面的命令对所有没有被选定的行发生作用。  
= 打印当前行号码。  
# 把注释扩展到下一个换行符以前。  
sed替换标记

g 表示行内全面替换。  
p 表示打印行。  
w 表示把行写入一个文件。  
x 表示互换模板块中的文本和缓冲区中的文本。  
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记
sed元字符集

^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。
sed实际用例
#替换oldboy.txt中所有的oldboy变为oldboy_python
#此时结果输出到屏幕,不会写入到文件
sed 's/oldboy/oldboy_python/' /tmp/oldboy.txt
#使用选项-i,匹配每一行第一个oldboy替换为oldboy_python,并写入文件
sed -i 's/oldboy/oldboy_python/' /tmp/oldboy.txt
#使用替换标记g,同样可以替换所有的匹配
sed -i 's/book/books/g' /tmp/oldboy.txt
#删除文件第二行
sed -i '2d' /tmp/oldboy.txt
#删除空白行
sed -i '/^$/d' /tmop/oldboy.txt
#删除文件第二行,到末尾所有行
sed '2,$d' /tmp/oldboy.txt
#显示10-30行
-p --print
-n --取消默认输出
sed -n '10,30p' /tmp/oldboy.txt

把文件改成可执行文件

chomod 777

cd 跳转

cd ../ 查看父级的目录
cd ~ 返回当前用户的家目录
cd -返回上一次访问的目录

mv(移动和改名)

mv 文件 /文件夹改名
mv x.log xx.log
移动文件 文件夹
mv /home/shahe/oldboy /tmp/chaoyang

mv  文件名  ./路径
mv  ppt.mp3
mv 新文件 旧文件

alias 别名

把对应的 命令执行的结果进行替换
alias查看 一些命令执行的相应结果进行修改
alias rm="执行命令"
示例
alias   rm="echo  你这个傻蛋,求你别用rm了"



alias   rm="echo 你这个大傻子,求求你别用rm了"

alias  rm="rm -i"   #改回去 

unalias 命令  #取消别名 


unalias rm

du 统计文件夹大小命令

1.ls -h 
2.以du命令为准 
    -h 显示mb gb单位
    -s 显示统计
#统计/var/log文件夹大小
3.du -sh /var/log/
/是根目录 
./是当前 
/* 是根目录下所有 
./* 当前所有文件夹
hostname

查看linux网络端口命令

知识点

netstat  -tunlp  

参数解释:
    netstat [选项]
    -t或--tcp:显示TCP传输协议的连线状况;
    -u或--udp:显示UDP传输协议的连线状况;
    -n或--numeric:直接使用ip地址,而不通过域名服务器;
    -l或--listening:显示监控中的服务器的Socket;
    -p或--programs:显示正在使用Socket的程序识别码和程序名称;
    -a或--all:显示所有连线中的Socket;

    #案例
    检查服务器的80端口是否打开

    netstat  -tunlp  |  grep 80  

    #安装nginx,且运行nginx,打开80端口
    #安装   yum install  nginx  -y  
    #启动   通过yum安装的软件,都可以通过系统服务管理命令,去启动,无论是nginx 还是mariadb等
    systemctl  start/stop/restart/status  nginx  
    #注意关闭防火墙的命令
    systemctl stop  firewalld       #停止防火墙服务 
    systemctl disable  firewalld    #停止防火墙开机自启

    iptables -F                     #清空防火墙规则  

netstat -tunlp
监听
master process 工作进行
work process 
#检查nginx的端口是否存活
netstat -tunlp |grep nginx

ln 软连接是什么

相当于一个别名
快捷方式
ln -s 目标文件 软连接
ln -s 目标文件  软连接名

1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 10月 15 21:23 test.txt

2.在/home目录中建立软连接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test

3.查看软连接信息
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt

4.通过软连接查看文件
cat my_test

my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,但是删除了本尊,
快捷方式就无意义不存在了

find 查找

#Linux里如何找到需要的文件 例如 oldboy.py
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数

-name 按照文件名查找文件 
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录 (文件夹)。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件 (快捷方式)。
f - 普通文件 (文本类型)。
s - socket文件
全局搜索
find / -type 文本类型 -name 文件名(文件夹)
局部搜索
/路径
find /opt -type 文本类型 -name 文件名(文件夹)


#示例
全局搜索以txt结尾的文件
find / -type f  '*.txt'

find   /    -type  d    -name "python*"    #找出磁盘上所有的以python开头的文件夹

示例

find /tmp/ -type f  -name "oldboy.py"

#找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"

#找到/etc下所有名字以host开头的文件
find /etc -name 'host*'

#找到/opt上一个名为settings.py
find /opt -name 'settings.py'

cat 查看文件的内容

linux 的结束符都是以$结尾
tac 反向查看文件 从最后一行开始读
cat  -n文件 显示文件并带有行数
cat -E 文件 每一行结尾结束符
nl 文件名 一样
cat 文件 只显示文件

显示中文
#!congding:utf-8 加一个头 需要在文件中加一个头信息

写入文件

直接写入文件
cat >> second.py <<EOF
cat >> shi.txt << EOF

cp(拷贝)

cp是个好命令,操作文件前,先备份
cp main.py main.py.bak

使用方法

复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py

把当前文件夹的内容 拷贝到/opt/tmp_back/ 
mkdir /opt/tmp_back 创建一个文件夹
cp -R ./*  /opt/tmp_back/ 

Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) 
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变    可以用stat
cp -a 相当于-pdr
#递归复制test文件夹,为test2
cp -r test test2


echo(显示)

1.可以写入文件
echo 打印
echo 24期{1..999} >
echo 打印{1..999}这个是 打印多个
echo {1...999} >>> (写入文件) 1.py 
pwd (翻译全称print work directory) ,打印当前工作目录  
2.找出当前PATH的值 $是取值符
echo $PATH  
3.修改PATH PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
#进行冒号隔开
4.清空文件内容
echo ""> 文件名

ls 查看

ls /路径 ls /opt
ls -l  /opt #显示对应文件和目录的详细资料 
ls -a 显示指定目录所有子目录与文件,包括隐藏文件
ls -h -l以易于阅读的格式输出文件大小
pwd 显示当前路径
 ls  -l -a -h  /tmp  查看/tmp下全部内容 和全部文件大小
 

sl命令

好玩的命令

more 分屏显示

more 文件名 分屏分页显示
按下空格space是翻页
按下b键是上一页
回车键向下读取内容

head tail 查看

head 从头看 
head -n 4 显示到第四行
默认显示前十行
tail 从末尾开始查
默认显示世行
tail -f 文件名 监测日志的变化
用于 文件变化会实时生成
#示例
tail -f /var/log/py.log
-3 相当于 -n 3
#输出文件的10-20行
head -n 4 '文件名' | tail -n 3 

ps查看进程命令

|管道符
ps -ef 
ps aux #列出机器所有信息  
ps aux |grep  "文件名" 进行过滤 # "文件名"有关进程

示例

ps aux |  grep  "python"  #找到机器所有和python有关的进程

grep过滤字符串命令

grep -n "查找内容" 文件名 显示行号
    -i 忽略大小写
    -v 反转参数(排除我要找的东西)
    查找以什么开头^
    以什么结尾 $
    查找空白符 ^$ 找出空格  
    |二次过滤 不用再次指定文件名
    E 支持正则语法
#示例
找出文件的有用信息行
#去掉注释 grep -v "^#"
#去掉空行 grep -v "^$"
grep -v "^#" filename | grep -v "^$"

杀死进程kill

19.杀死进程的命令
​#通过进程id  杀死nginx ​   
1.  检查pid    ps aux  | grep  nginx ​   
2.杀死进程id      kill  id 号码    

rm删除

rm 
rm -rf  /tmp/*   强制删除 
rm -i  文件  #删除文件且交互式提示,是否删除 ,系统做了别名,默认加上rm -i 


rm -r  文件夹 #递归删除文件夹 

rm -f  文件  #强制删除文件,且不提示 

清空

clear清除屏幕
> 文件名 清空文件内容

压缩解压缩

压缩

打包 tar -cvf alltmp.tar ./*
        -xvf 解包
        -zcvf 压缩打包
        -zxvf 解压缩包

另一种打包

yum install unzip -y
解压缩 unzip 压缩包

yum包下载

是rpm的升级版 可以把关联软件

下载yum源

21.软件包管理 yum命令 

    软件包格式都是 

    mysql-xxx.rpm 软件格式包 

    rpm -ivh  mysql-xxx.rpm  #安装rpm软件包 

    python-xx.rpm  


配置yum源的过程
centos的默认yum仓库路径是 /etc/yum.repos.d  ,在这目录下,第一层文件夹中的repo文件会识别为仓库文件



1.获取阿里云的yum源
打开网址https://opsx.alibaba.com/mirror

2.找到第一个仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

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


4.生成yum缓存,加速以后下载
yum makecache 

相当于python的pip3装模块

yum 内置的模块
例如 yum install vim -y 
yum install wget
因为yum包里的东西不会自动清空
清除YUM缓存。
yum clean all

文件操作

vim 文本编辑器升级版

    1. vi或者vim  文件名  #打开文件,进入命令模式
    2. 输入  a i o ,其一的字符,进入编辑模式
        a   append 在光标后开始写入
        i   insert 在光标当前位置开始编辑
        o   在光标下一行开始编辑 
    3.代码写完后,退出编辑模式,按下esc,回到命令模式
    4.输入 冒号,进入底线命令模式  
        :q    直接不保存退出
        :q!   不保存强制退出
        :wq     保存退出
        :wq!  强制写入内容且退出 

top任务管理器

  top 可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

显示

top命令

top 命令用于动态地监视进程活动与系统负载等信息

img

我们来分析一下图片信息

统计信息区

第一行 (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命令)

  • 8053444 total:物理内存总量
  • 7779224 used:已使用的内存总量
  • 274220 free:空闲的内存总量(free+used=total)
  • 359212 buffers:用作内核缓存的内存量
第五行:swap信息
8265724 total:交换分区总量
33840 used:已使用的交换分区总量
8231884 free:空闲交换区总量
4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

参数

-b 批处理
    -c 显示完整的治命令
    -I 忽略失效过程
    -s 保密模式
    -S 累积模式

    -d<时间> 设置间隔时间
    -u<用户名> 指定用户名
    -p<进程号> 指定进程
    -n<次数> 循环显示的次数

查看文件特殊权限的命令

查看 chattr设置的命令
lsattr 文件名
lsattr test.py
---i-------- /etc/resolv.conf

设置文件特殊权限的命令

chattr +i 文件名 #加锁 #root用户都没有这个权限
chattr -i 文件名 #去掉锁
#让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
chattr +a /var/log/messages

data更新下系统事件

yum ntpdate 需要下载模块
ntpdate 服务器ip

yum install  ntpdate -y  
ntpdate   ntp.aliyun.com    #和阿里提供的时间服务器,进行时间同步

在线下载wget

yum install wget
wget -r -p yum install  ntpdate -y  
ntpdate   ntp.aliyun.com    #和阿里提供的时间服务器,进行时间同步

关机命令

shutdown 关闭服务器
reboot命令用于重启机器
poweroff用于关闭系统

scp远程传输

Linux scp命令用于Linux之间复制文件和目录

scp 你想要的内容 传输到哪里
两个机器进行连接 需要把网络连接变成桥接

语法

scp 你想要的内容 传输到哪里
[当前在机器1]
#把我本地的机器1的/tmp/刚哥.txt 发到远程机器的/opt/目录下
scp /tmp/刚哥.txt root@机器的ip:/opt/
#把自己的东西发给别人

#把本地的first.py 发送给root@192.168.16.105这个机器,然后
    1.如果data文件夹存在,则放入data文件夹中
    2.如果没有data这个文件夹,则把first.py改名为data
    
scp  ./first.py   root@192.168.16.105:/data 


#把别人的东西拿过来 # root@192.168.16.105:/data/钢哥的小秘密.txt
scp  root@192.168.16.105:/data/钢哥的小秘密.txt   /opt 

#发送所有的文件和文件夹给别人  
把当前目录所有 发给 @192.168.16.105对应目录下的data目录
scp  -r ./* root@192.168.16.105:/data/ 

知识点扩展



W开头的命令

which

查找并显示给定命令的绝对路径。
用于查找命令

用法

语法  
which [-a] filename ...
which 文件名
简介
which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which 是根据使用者所配置的 PATH 变量内的目录去搜寻给定命令的绝对路径。如果所给出的命令是shell 内嵌命令的话,命令是无法给出绝对路径。且命令执行失败。

示例

root@LeeMumu:~# which man
/usr/bin/man
root@LeeMumu:~# which ls
/bin/ls
root@LeeMumu:~# echo $?
root@LeeMumu:~# which cd 
root@LeeMumu:~# echo $?
    which python
    #usr/bin/python

whereis

简介

查找二进制程序、代码等相关文件路径。
whereis 文件 #查找出相关属性名

详细介绍

whereis命令 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。
语法
whereis [options] [-BMS directory... -f] name...

选项

-b              # 只查找二进制文件
-B<目录>         # 只在设置的目录下查找二进制文件
-f              # 不显示文件名前的路径名称
-m              # 只查找说明文件
-M<目录>         # 只在设置的目录下查找说明文件
-s              # 只查找原始代码文件
-S<目录>         # 只在设置的目录下查找原始代码文件
-u              # 查找不包含指定类型的文件

示例

root@LeeMumu:~# whereis man
man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man7/man.7.gz /usr/share/man/man1/man.1.gz
root@LeeMumu:~# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
root@LeeMumu:~# whereis -b ls
ls: /bin/ls
whereis ls 会打印出对应的路径和压缩文件
#ls:/user/bin/ls   /usr/share/man/man1/ls.1.gz
which ls #usr/bin/ls
which cd 会输出对应绝对路径#/usr/bin/cd

who

要显示关于谁正在使用本地系统节点的信息

显示目前登入系统的用户信息。
要显示当前用户名whoami  root  
whoami 我是谁 查看当前用户明

定时任务

1.检查定时任务列表 

crontab -l  

2.设置定时任务

crontab  -e   

#语法  ,每分钟向一个文件中,追加一个信息 

知识点

命令要写绝对路径
不写 就是*
- 区间
,第几和第几

练习

查看命令的绝对路径
which rm -a
#每分钟执行一次命令
*   *   *   *  *     命令的绝对路径 

#每小时的3,15分组执行命令
*   *   *   *  *     命令的绝对路径 

3,15    *   *  *  *   




#在下午8-11点的第3和第15分钟执行

*     *     *   *  *     命令的绝对路径 
3,15  20-23   *  *  *  


3,5    5-9(早上五点,6点,7点,8点,9点)

第三分钟和第五分钟




#每晚21:30执行命令

*     *     *   *  *     命令的绝对路径

30   21   *  *  *   


#每晚的12点执行命令 

0  0   *  *  *  



#每周六、日的1:30执行命令
*     *     *   *  *     命令的绝对路径

30    1    *  *   6,0




#每周一到周五的凌晨1点,清空/tmp目录的所有文件

*     *     *   *  *     命令的绝对路径

0   1   *  *  1-5   /usr/bin/rm -rf /tmp/*








#每晚的21:30重启nginx

*     *     *   *  *     命令的绝对路径

30  21   *  *  *   /usr/bin/systemctl  restart nginx  





#每月的1,10,22日的下午4:45重启nginx

*     *     *   *  *     命令的绝对路径
45   16    1,10,22  *  *   /usr/bin/systemctl  restart nginx  


#每个星期一的上午8点到11点的第3和15分钟执行命令

*     *     *   *  *     命令的绝对路径

3,15  8-11  * *   1    

引用云仓库

用linux传输到windows

yum install lrzsz 下载模块

支持拖拽 
sz 传输
rz 接收

vim和vi

vi是linux 内置的文本编辑器
vim 是具有程序编辑能力的编辑器
使用
vim 需要yum install vim -y 
写y 直接同意 如果不写y会有判断 是否同意
安装之后
vi 和vim一样
1.vi 打开进入文件内部
2.进入命令模式
3.输入i insert 
    a append 
    o 光标下一行
4.按下esc回到命令模式
5.输入:进入底线命令模式
6.输入
    :wq保存退出 
    :q退出
    :wq保存退出
    :wq!强制写入内容且推出
    :!q强制退出
    :wq!强制写入

参数

w 是下一个
b 是上一个
结尾是$ 开头0
行尾 G 行尾 g
命令模式/从前往后找 查找 ?从后往前找
    查找到了用字母n 查找下一个
    
shift +5 就是% 查看括号的另一半
想要复制的行数 yy p复制
x删除光标当前字符
u是撤销
dd删除所在行
dG 删除当前行和下面的所有行
cu 列出行号
:加上行号 就可以找到对应的行数
#注意不要在第一行输入赋值内容 容易查询
vim 文件名 vi文件名
vi/vim编辑器,编辑文件
执行 vim的
#coding=utf-8 可以识别中文

gcc执行代码

一.安装(基于Centos6.5, 其他系列Linux系统命令有所不同)
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
1.就把gcc当成c语言编译器, g++当成c++语言编译器用就是了.(知乎)
2.wget是一个从网络上自动下载文件的自由工具, 可以在用户退出系统的之后在后台继续执行, 直到下载任务完成.(百度百科)

 

二.测试(查看版本信息, 编译Helloworld)

1.查看gcc版本信息

gcc --version

img

2.编写Helloworld

创建名为ctest.c文件

touch ctest.c

编辑该文件

img

#include <stdio.h>

int main()
{
printf("hello world!\n");
return 0;
}

编译gcc ctest.c

可以看到生成了a.out文件

img

执行a.out

./a.out

输出结果

img

打包,压缩命令

打包命令  
tar   
参数 
-z  调用gzip压缩
-x  解包
-c  打包
-v 显示过程 
-f  必须写参数结尾,指定tar包的名字 

案例

1.把/tmp下所有内容打包成  alltmp.tar 文件 
tar -cvf  alltmp.tar  ./*

2.解包的命令,把alltmp.tar的内容,解压缩到/tmp目录下

3.打包且压缩的命令,能够节省60%-70%磁盘空间
tar  -zcvf  alltmp.tar.gz   ./*  

4.解压缩命令 
tar  -zxvf  ../alltmp.tar.gz    ./


17.另一个打包命令 zip,解包命令unzip  

杀死进程

杀死进程的命令

#通过进程id  杀死nginx 

    1.  检查pid
    ps aux  | grep  nginx 

    2.杀死进程id  
    kill  id 号码

上课笔记


重点记忆


问题

如果没有网络怎么办

1.如果没有ifconfig命令怎么办 

- 使用内置的命令
  ip  addr show  #查看网络信息对应的ip

   配置好网络后,安装网络工具包
    yum install  net-tools  -y  #

  

2.如果使用ifconfig看不到ip地址的话,那就得重启网络服务

3.重启网络的步骤
    -确保配置文件正确配置
    vim /etc/sysconfig/network-scripts 

确保onboot=yes即可

4.重启网络服务 
systemctl  restart  network   

sk 问题

1.服务器有哪些硬件?
主板,CPU,CPU风扇,网卡,显卡,内存,声卡,硬盘,电源模块

2.内存,CPU,硬盘的作用?
内存:RAM,CPU与磁盘之间的缓冲设备,也叫临时储存器
CPU:进行运算,逻辑处理
硬盘:数据存储介质,可以永久存储数据信息

3.服务器常见品牌?
IBM 浪潮  DELL  联想 HP

4.操作系统的作用?
计算机系统中必不可少的基础系统软件,它是应用程序运行及用户操作必备的基础环境支撑

5.开源软件的特性,以及开源许可的协议
低风险、高品质、低成本、更透明
许可协议:Apache许可证,MIT许可证,BSD许可证,GPL许可证,Mozilla许可证,LGPLL许可证

6.linux优点
免费、开源、稳定性强、对数据处理更加友好
使用linux的好处是自由传播,免费,不会犯法,任意切换图形/命令终端,安全稳定,不用杀毒软件,不卡

7.说出常见的linux发型版
RedHat、CentOS、openSUSE、Debian、Ubuntu、

8.用虚拟机学linux的好处是?
    1.利用虚拟机搭建Linux学习环境简单方便、容易上手,最重要的是虚拟机模拟的Linux和真实服务器几乎无区别
    2.搭建Linux集群或者需要模拟多台服务器通信的时候,可以同时开启好几台虚拟机
    3.免费搭建Linux环境,不需要自己花钱租服务器
    4.需该虚拟机配级方便快捷
    

资源

1.查看linux的path变量
    echo  $PATH
2.简述linux的文档目录结构
    / 根目录是顶级目录
    /opt
    /etc 
    /usr/bin
    绝对  从顶级根目录开始找到当前位置
    相对路径    只要不是绝对路径,就是相对路径
    
    linux目录格式是一个倒过来的树形目录 
    
    
3.递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng}
mkdir -p /tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng}




4.显示/tmp/下所有内容详细信息
ls -la /tmp/*

5.简述 /  ~  - 的含义
/ 在开头是根目录 ,在第二个位置起,就是目录分隔符 
~  用户家目录 
-    上一次工作目录

6.请简述你如何使用vi命令
    1.  vi  文件 
    2.   输入i  进入编辑模式
    3.  输入内容,写东西
    4.  按下esc  ,推出命令模式,输入冒号  :wq!  强制写入内容保存并且退出vim



7.查看/etc/passwd的内容并且打印行号
cat   -n   /etc/passwd 


8.查看文本有哪些命令?
cat   tac  head  tail    more less  

9.linux xshell常用快捷键?
ctrl + l  等于clear
ctrl + d  快速logout
ctrl +  shift  + r  等于快速登录

10.如何用echo清空一个文件?
echo > filename  

11.复制/tmp/下所有内容到/home,在修改文件前,先拷贝一份,防止内容被破坏
cp -r  /tmp/*    /home/    # -r递归子目录拷贝内容 

12.重命名test.py为my.py
mv  test.py  my.py  

13.强制删除/tmp下内容

rm  -rf  /tmp/   #删除tmp整个文件夹
rm  -rf  /tmp/*   #删除tmp文件夹中所有内容 




14.找到服务器上的settings.py

find  从哪找  名字叫什么 


find  /  -ty  -name   settings.py  




15.找到/etc下的网卡配置文件,提示网卡配置文件名是ifc开头

find  /etc   -type f  -name  "ifc*"  




这里题目,请先cp /etc/passwd /tmp/   拷贝文件

16.过滤出/tmp/passwd下有关root的信息


grep  过滤命令 
grep 你想要什么   从那个文件中过滤

grep -i "root"   /tmp/passwd  #  -i参数是忽略大小写


17.过滤出/tmp/passwd下除了/sbin/nologin的信息,且打印行号

#从/tmp/passwd这个文件中,找出,除了/sbin/nologin这个信息的行
grep  -v  "/sbin/nologin"    /tmp/passwd  # -v是排除的意思


#去掉空白和注释行 
grep -v  "^$"  passwd  | grep -v "^#"


18.查看/tmp/passwd前25行

head -25  /tmp/passwd


19.查看/tmp/passwd后3行


tail -3  /tmp/passwd



20.不间断打印/var/log/py.log的信息

tail  -f  /var/log/mysql.log  




21.替换/tmp/passwd中的所有root为ROOT

#sed处理字符的命令 
#语法,s是替换模式,g是全局替换 


#
sed "s/你想替换的内容/替换之后的内容/g"  
#把passwd文件中所有的root替换为大写的ROOT,  -i参数是将替换结果写入到文件
sed -i    "s/root/ROOT/g"    passwd




23.配置rm别名为“禁止你用rm,谢谢”,然后取消别名

alias  rm="echo 常鑫,禁止你使用rm,求求你了"




24.将服务器1的/tmp/my.py远程传输到服务器2的/opt/目录下

#此时我在服务器2上

scp  你想要的内容  你想放到哪里去

scp  root@服务器1ip:/tmp/my.py    /opt/


25.将服务器2的/opt/test.py拷贝到服务器1的/home目录下

#此时我在服务器2上  

scp  root@服务器2ip:/opt/test.py    root@服务器1ip:/home/




26.统计/var/log/文件夹大小

du  -sh  /var/log/   # -s 合计结果  -h 显示 mb gb单位


27.简述top的常见参数

28.给settings.py加锁,禁止删除
chattr +i settings.py  

29.同步服务器时间到ntp.aliyun.com

ntpdate   -u  ntp.aliyun.com  # -u 更新时间


30.下载http://pythonav.cn/xiaobo.jpg图片

wget http://pythonav.cn/xiaobo.jpg

明天总攻击

16.打包,压缩命令 

    打包命令  
    tar   
    参数 
    -z  调用gzip压缩
    -x  解包
    -c  打包
    -v 显示过程 
    -f  必须写参数结尾,指定tar包的名字 


    1.案例    
    把/tmp下所有内容打包成  alltmp.tar 文件 
    tar -cvf  alltmp.tar  ./*
    
    2.解包的命令,把alltmp.tar的内容,解压缩到/tmp目录下
    
    3.打包且压缩的命令,能够节省60%-70%磁盘空间
    tar  -zcvf  alltmp.tar.gz   ./*  
    
    4.解压缩命令 
    tar  -zxvf  ../alltmp.tar.gz    ./



17.另一个打包命令 zip,解包命令unzip  


18.查看linux网络端口的命令

netstat  -tunlp  

    参数解释:
        netstat [选项]
        -t或--tcp:显示TCP传输协议的连线状况;
        -u或--udp:显示UDP传输协议的连线状况;
        -n或--numeric:直接使用ip地址,而不通过域名服务器;
        -l或--listening:显示监控中的服务器的Socket;
        -p或--programs:显示正在使用Socket的程序识别码和程序名称;
        -a或--all:显示所有连线中的Socket;

#案例
检查服务器的80端口是否打开

netstat  -tunlp  |  grep 80  

#安装nginx,且运行nginx,打开80端口
    #安装   yum install  nginx  -y  
    #启动   通过yum安装的软件,都可以通过系统服务管理命令,去启动,无论是nginx 还是mariadb等
    systemctl  start/stop/restart/status  nginx  
#注意关闭防火墙的命令
    systemctl stop  firewalld       #停止防火墙服务 
    systemctl disable  firewalld    #停止防火墙开机自启
    
    iptables -F                     #清空防火墙规则  
    

19.杀死进程的命令

#通过进程id  杀死nginx 

    1.  检查pid
    ps aux  | grep  nginx 

    2.杀死进程id  
    kill  id 号码
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!