linux 操作系统
企业版vmware vsphere esxi服务器
在线下载资源 wget命令 ,需要安装
自动下载文件的自由工具
yum install wget
常识
快捷键
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模式创建虚拟机,虚拟机就是一个新的局域网
桥接模式
用此模式,就是局域网中一台独立的主机,它可以访问该类网段任意一台机器,
仅主机模式
单机模式
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目录:
Linux目录:
/opt 第三方模块 /etc 放置配置文件 /root 存放root的信息 /home /etc /var 树形结构 根目录是 斜杠 / 所有目录都是以根目录为开头 目录中间的斜杠是,目录分隔符
Linux首先是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。
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
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进入这个目录,或者查看详细信息
清空权限命令
chmod 0 清空所有人的权限
参数
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 命令用于动态地监视进程活动与系统负载等信息
我们来分析一下图片信息
统计信息区
第一行 (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
2.编写Helloworld
创建名为ctest.c文件
touch ctest.c
编辑该文件
#include <stdio.h> int main() { printf("hello world!\n"); return 0; }
编译gcc ctest.c
可以看到生成了a.out文件
执行a.out
./a.out
输出结果
打包,压缩命令
打包命令 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 号码