1. 常用操作命令
树状形式显示
yum install tree
查看前5个进程
ps aux | head -n5
top(linux任务管理器)
top
tail(动态监测文件变化)
tail -f access.log
wget下载文件
# 下载安装wget
yum install wget
# 格式
wget 路径 默认下载在当前路径
# 案例
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-repo
压缩解压
Windows的压缩包与Linux的压缩包能否互通
windwods:rar,zip
linux:tar.gz, zip互通,不支持rar
tar打包与压缩参数(******** 常用 ********)
tar 命令:用来压缩和解压文件。
tar本身不具有压缩功能。他是调用压缩功能实现的
tar(选项)(参数)
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。
tar压缩解压案例
# tar打包与压缩(******** 常用 ********)
# 解压
tar -xf xx.tar.gz # 解压xx.tar.gz
tar -zxvf Python-3.7.0b3.tgz # 解压
tar -xjf xx.tar.bz2 # 解压缩bz2结尾的文件
tar -xzvf xx.tar.gz # 解压tar.gz,详细过程列出来
tar xf /etc/local.tar.gz -C /tmp # C指定解压到哪个路径
# 压缩 tar -czvf 压缩包名称 压缩文件
tar -czvf oldboy.txt.tar.gz oldboy.txt # 压缩oldboy.txt
tar -cf all_pic.tar *.jpg # 压缩当前目录所有jpg结尾的文件
gzip (只能压一个文件,不能压文件夹,会把原来的删除)
gzip (只能压一个文件,不能压文件夹,会把原来的删除)
gzip file
gzip -d file
有什么用?
cd /etc/yum.repos.d/
zip的压缩和解压
3 zip的压缩和解压
yum install zip unzip -y
zip filename.zip filename # 压单个文件
zip -r home.zip /home/ #把home文件夹压缩
unzip home.zip #解压
unzip -l home.zip # 不解压,看内容
unzip home.zip -d /opt/ # 把当前路径下的home.zip 解压到opt
curl:连通性
# 下载安装
yum install curl
# 用处测试连通性或者下载
你的django:127.0.0.1:8080端口,先在本地curl一下,看看能不能通,可能是防火墙,阿里云的安全组
# 案例下载(-o 指定位置以及名称)
curl -o /home/a.png https:72743-20190.png
# 查看网站用的是什么类型的web服务器
curl -I www.taobao.com
上传下载 (4g以内)
# 下载安装
yum install lrzsz -y
# 使用
rz:上传,选择文件直接上传
sz:sz 文件路径 可以下载到当前主机
sort
# 案例
sort file.txt 对内容进行排序
sort -t ":" -k2 file.txt
sort -t ":" -n -k2 file.txt
uniq 去重
uniq 去重,连续挨着的才能去,所以要跟sort连用
sort file2.txt | uniq
wc
wc -l /etc/services
# 统计当前路径下有多少文件和文件夹
ls | wc -l
# 统计有多少个ssh相关的进程
ps aux |grep ssh | wc -l
查看系统版本信息
#查看系统版本信息
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
#查看内核版本号
uname -r
3.10.0-693.el7.x86_64
#查看系统多少位
uname -m
x86_64
#查看内核所有信息
uname -a
netstat命令
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
yum install net-tools
# 语法【选项】
netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;
# 实例
[root@oldboy_python ~ 10:21:59]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 814/sshd
tcp6 0 0 :::111 :::* LISTEN 2703/rpcbind
tcp6 0 0 :::3306 :::* LISTEN 29269/mysqld
udp 0 0 0.0.0.0:758 0.0.0.0:* 2703/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 2703/rpcbind
ps命令
- ps命令用于报告当前系统的进程状态。
- 可以搭配kill指令随时中断、删除不必要的程序。
- ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
ps (参数)
-e 显示所有程序
-f 显示UID等详细信息
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外
a 显示现行终端机下的所有程序,包括其他用户的程序
x 显示所有程序,不以终端机来区分
u 以用户为主的格式来显示程序状况
-u <用户识别码> 此选项的效果和指定”-U”选项相同
-p <程序识别码> 指定程序识别码,并列出该程序的状况
ps -ef|grep mysql
ps -ef|grep redis-server
参考实例
# 把所有进程显示出来:
ps -aux
ps -A
# 把所有进程显示出来,并输出到ps.txt文件:
ps -aux > ps.txt
# 查找特定进程信息:
ps -ef | grep ssh
# 显示指定用户信息:
ps -u root
# 按 CPU 资源的使用量对进程进行排序:
ps aux | sort -nk 3
# 按内存资源的使用量对进程进行排序:
ps aux | sort -rnk 4
Kill命令
kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。
# 选项
-a:当处理当前进程时,不限制命令名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。
# 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,
下面是常用的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
# 实例
先用ps查找进程,然后用kill杀掉:
ps -ef | grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
# 命令
kill 3268
pkill杀死进程
- 支持正则的kill命令
pkill nginx
pkill uwsgi
查看磁盘
df -h
selinux防火墙
- SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使用其他方法。
大多数ssh连接不上虚拟机,都是因为防火墙和selinux阻挡了
永久关闭方式:
1.修改配置文件,永久生效关闭selinux
cp /etc/selinux/config /etc/selinux/config.bak #修改前备份
2.修改方式可以vim编辑,找到
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
3.用sed替换
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4.检查状态
grep "SELINUX=disabled" /etc/selinux/config
# 出现结果即表示修改成功
临时关闭selinux(命令行修改,重启失效):
getenforce #获取selinux状态
#修改selinux状态
setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
数字0 表示permissive,给出警告,不会阻止,等同disabled
数字1表示enforcing,表示开启
# Tip:
修改selinux配置后,想要生效还得重启系统,技巧就是(修改配置文件+命令行修改,达到立即生效)
生产环境的服务器是禁止随意重启的!!!!
iptables防火墙
- 在学习阶段,关闭防火墙可以更方便的学习,
- 在企业环境中,一般只有配置外网ip的linux服务器才会开启防火墙,
- 但是对于高并发流量的业务服务器仍然是不能开启的,会有很大性能损失,
- 因此需要更nb的硬件防火墙。
关闭防火墙具体操作如下:
centos7默认已经使用firewall作为防火墙了
# 关闭防火墙
iptables -F # 临时关闭防火 允许所有的端口出去,清空所有的规则
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 关闭防火墙开机启动
systemctl is-enabled firewalld.service # 检查防火墙是否启动
hostnamectl 设置主机名
# 修改
hostnamectl set-hostname pyyuc
# 查看
hostname
DNS
- DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
# 查看Linux的dns,唯一配置文件
3 配置文件
cat /etc/resolv.conf
#dns服务器地址
nameserver 119.29.29.29
nameserver 223.5.5.5
本地强制dns解析文件/etc/hosts
指定本地解析:
/etc/hosts
主机IP 主机名 主机别名
127.0.0.1 www.pyyuc.cn
2 文件与目录的权限篇
介绍
- Linux权限的目的是(保护账户的资料)
- Linux权限主要依据三种身份来决定:
- user/owner 文件使用者,文件属于哪个用户
- group 属组,文件属于哪个组
- others 既不是user,也不再group,就是other,其他人
- 在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。
- 对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录
如何查看权限
ls -l
ls -lh 以人性化显示,kb,gb
文件类型参数介绍
文件类型
文件类型:
- #普通文件(文本, 二进制, 压缩, 图片, 日志等)
d #目录文件
b #设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c #设备文件(字符设备),终端 /dev/tty1, /dev/zero
s #套接字文件, 进程间通信(socket)
p #管道文件
l #链接文件
通过file来查看详细的类型
file a.txt
file /bin/ls
权限参数
ls -l /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql 6735642 8月 11 14:19 /var/log/mysqld.log
这个就代表mysqld.log文件属主是mysql,属组是mysql,只有mysql用户可以读取编写这个文件,其他人只能读此文件。
权限计数
- 我们已知三种身份权限(属主,属组,其他人),每种身份都有rwx的三种权限,系统还提供了数字计算权限。
r read 4
w write 2
x execute 1
-
每种身份最低是0分,最高是r+w+x 7分
-
因此三种身份,最高权限是777,最低是000
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
因此可知pyyu.txt的权限是
属主是6 r+w(4+2)
属组是6 r+w(4+2)
其他人是4 r(4)
id命令查看用户信息
# id指令查看用户所属群主
[root@ymq t1]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@ymq t1]#
修改文件属性
普通用户只能修改自己的文件名,时间与权限(注意)
因此修改其他用户权限,只能用最nb的root用户
切换root用户
当前/tmp/pyyu.txt文件以存在,且信息是
-rw-rw-r-- 1 pyyu pyyu 0 8月 11 16:41 pyyu.txt
# 切换用户
su -
修改属主为root
[root@oldboy_python /tmp 16:43:12]#chown root pyyu.txt
查看信息
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
修改属组
# chgrp
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
[root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt
[root@oldboy_python /tmp 16:45:51]#ll pyyu.txt
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
修改文件/目录的权限
chmod [身份] [参数] [文件]
u(user) +(添加)
g(group) -(减去)
o(other) =(赋值)
a(all)
# 案例
当前权限
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
方法1
减去属主的写权限
chmod u-w pyyu.txt
查看权限
-r--rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
方法2
属主添加可读可写可执行权限
chmod 700 pyyu.txt
属主可读可写可执行
属组可读可执行
其他人可读可执行
chmod 755 pyyu.txt
修改文件名,修改文件更改日期
mv pyyu.txt chaoge.txt
#触摸,修改时间
touch chaoge.txt
3 软连接,硬连接
软连接,硬连接介绍
- 软连接也叫做符号链接,类似于windows的快捷方式。
- 常用于安装软件的快捷方式配置,如python,nginx等
- 软链接新建inode
- 硬链接新建一个filename,指向同一个inode
- 建立软连接一般建立到user/bin
- 建立以后,直接在当前就可以启动,不然需要进入到改软件得bin目录下启动
# 格式
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.查看软连接信息 ls -l
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,
但是删除了本尊,快捷方式就无意义不存在了