1. 定时任务
at 可以来做一次性的任务
crontab介绍
- 同步时间
- 备份
- 日志
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
分钟 小时 天 月 周 用户 命令
* * * * * root touch /tmp/a.txt
* 代表所有
* * * * * root echo "1" >> /tmp/a.txt 每分钟做什么事
0 * * * * root echo "0" >> /tmp/b.txt 每个小时的第0分钟做什么事
0 4 3 * * root echo "0" >> /tmp/c.txt
0 4 * * 4 root echo "0" >> /tmp/c.txt
0 4,6,8 * * * root echo "0" >> /tmp/d.txt 每天的4,6,8点的时候做什么事
0 8-22 * * * root echo "上课" >> /tmp/f.txt 每天的早上8点到22点做什么事
0 8-22/3 * * * root echo "休息" >> /tmp/e.txt 每天的早上8点到22点每隔3个小时做什么事
41 * 3,15,25,30 * 6 echo "da" >> /tmp/g.txt 每个月的3,15,25,30 或者每周6做什么事 (特殊的)
* 代表所有
#1,#2,#3 #1或者#2或者#3
#1-#2 #1到#2
/# 每隔#时间
crontab使用
-u 指定用户 默认是当前用户
-e 编辑
-l 列出
-r 删除
不是真正的存在/etc/crontab,而是存在/var/spool/cron/,这个目录下会为每一个用户创建一个文件
建议大家
- 分钟不要用*
- 分钟不要用*
- 分钟不要用*
2. IP及主机
ip地址的分类
ip总共多少位? 有多少段?
一个段是8位 总共32位
又分为网络位和主机位
192.168.182.128
192.168.182 这个网段
128 主机位 ,可以通过主机来判断当前的网段内可以放多少台终端
A
前8位为网络位,后24位为主机位
0 0000000
0 1111111
1-126
127 为回环地址
可用网段 2^7-1
主机 2^24
主机位全为0,表示网段
主机位全为1,网段里面的广播地址
可用ip是多少?2^24-2
共有地址: 所有人都可以访问的地址
私有地址:只能内部访问的地址
10
B
前16位为网络位,后16位为主机位
10 000000 00000000 128
10 111111 11111111 191
可用网段: 2^14
可用ip: 2^16-2
私有地址
172.16-172.31
C
前24位为网络位,后8位为主机位
110 00000 0 0
110 11111 255 255
192
223
可用网段 2^21
可用ip地址 2^8-2
私有网段
192.168.0
192.168.255
D 广播 多播的地址
1110 0000
224
1110 1111
239
E 留作科研使用
240-254
CIDR(无类域间路由)
网络位向主机位借位
前30位网络位
后2位为主机位
ip地址/子网掩码 与运算
子网掩码 网络位全为1,主机位全为0
192.168.182.129/24
1100 0000 1010 1000 1011 0110 1000 0001
255.255.255.0
11111111 11111111 11111111 00000000
192.168.182.0
与 全为1才位1,只要有0则为0
或 有1则为,全为0才为0
异或 相同为0,不同为1
取反 -(n+1)
左移 2<<2 n*2位移倍数次方
右移12>>2 n/2位移倍数次方 向下取正
10.23.34.56/15
10.00010111.34.56
0000 1010 00010111
1111 1111 11111110
10.22.0.0
可用ip地址:2^17-2
ip的获取方式
手动
dhcp服务器 分配ip地址
手动设置
ifconfig
ip addr
ip addr add 192.168.182.200/24 dev ens33
ip a add 192.168.182.245/24 dev ens33 label ens33:0
ip a del 192.168.182.200/24 dev ens33
ip a del 192.168.182.20/24 dev ens33 label ens33:1
网卡配置
存放路径:cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet 网卡的接口类型: Ethernet Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp 获取ip地址的协议: dhcp none static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 网卡名称
UUID=04faa6f8-44e8-479a-aa55-2df5783ce516 uuid
DEVICE=ens33 设备
ONBOOT=yes 开机是否自启动
IPADDR=192.168.182.130 ip地址
NETMASK= 255.255.255.0 子网掩码
GATEWAY= 192.168.182.2 网管
DNS1=114.114.114.114 dns1
DNS2=8.8.8.8 dns2
存放dns的配置文件路径:/etc/resolv.conf
hostname
查看或者修改主机名
/etc/hostname 配置文件
临时有效:
hostname name
永久有效:
- 修改配置文件 - hostnamectl set-hostname name
本地解析
可以写主机和ip地址的映射关系
并且先检查此文件
/etc/hosts
3. 端口及网络
ss\netstat
打印网络系统的状态:centos7建议使用ss
-t tcp
-u udp
-x 套接字
-a 所有
-l 处于监听的
-p 相关的程序及pid
-n 显示端口
22 ssh
http 80
mysql 3306
redis 6379
mongdb 27017
windows远程桌面 3389
oracle数据库 1521
https 443
ftp 20 21
常用的组合: -tnlp -aulp -tan
wget
下载文件
-O filename 指定生成的文件名
-P 保存到指定的目录
-q 静默模式
-r 递归下载
-p 下载所有的html元素
wget http://www.xiaohuar.com/d/file/20190809/small620192446e4599c844fc40a3e7b119141565366028.jpg
wget -P /tmp http://www.xiaohuar.com/d/file/20190809/small620192446e4599c844fc40a3e7b119141565366028.jpg
wget -O /tmp/xiaohua.png http://www.xiaohuar.com/d/file/20190809/small620192446e4599c844fc40a3e7b119141565366028.jpg
wget -p http://www.xiaohuar.com/
wget -q -O /tmp/xiaohua2.png http://www.xiaohuar.com/d/file/20190809/small620192446e4599c844fc40a3e7b119141565366028.jpg
其中 -P 和-O 选项冲突
4. 进程相关
ps
查看进程
支持的方式
- unix格式 -a -e
- BSD格式 aux
- GNU格式 –help
默认显示的是当前终端上的进程
a 显示所有终端的进程
x 显示不连接终端的进程
u 展示进程的所有者信息
f 显示进程树
o 按照指定的属性来显示信息
L 显示所有的属性
k 用来排序,后面执行排序的属性,如果需要倒叙的话,属性前面加上-
-e 显示所有的进程
-f 显示完整的信息
-U username 用来指定用户
常用组合: aux -ef
需要跟grep做结合
pidof
跟进名称来查进程
进程管理工具
kill
向进程发送信号,实现对进程的管理,每个信号都有不同的数字对应,
常用信号:
- 1: sighup 重读配置文件
- 2: sigint 终止正在运行的进程,相当于ctrl+c
- 9:sigkill 强制杀死正在运行的进程
- 19:sigstop:后台休眠
- 18:sigcont 继续运行
kill -l # 查看信号
按照pid:kill pid
按照名称:killall name
按照模式:pkill name
系统工具
uptime
[root@bogon ~]# uptime
23:40:10 up 5:08, 2 users, load average: 0.00, 0.01, 0.05
当前时间 开启时长 在线人数 平均负载:1分钟,5分钟,15分钟
- 显示当前时间,系统开启的时长,当前在线的人数,系统的平均负载(1分钟,5分钟,15分钟)
- 平均负载:在特定的时间内cpu上等待运行的进程数
- 如果不超过cpu核心数的2倍则认为是良好的
top
排序
- P 按照cpu排序
- M 按照内存排序
- T 按照占用cpu的时长,TIME+
首部信息显示
- uptime信息:l
- tasks和cpu信息:t
- 内存信息:m
- 分别显示cpu信息:1(数字)
- 修改刷新时间 s
- 杀死正在运行的进程 k
- 退出 q
选项:
- -d # 指定刷新时间
- -b 显示所有的进程
- -n # 刷新多少次以后退出
htop
在epel源中,下载:yum install -y htop
性能分析工具
free
-m 以mb的方式显示
-g 以GB的方式显示
-h 易读格式
-s n 指定刷新频率
-c n 刷新n次后退出
vmstat
vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 341948 2152 733492 0 0 21 2 68 70 0 1 99 0 0
procs:
r 可运行(正在运行或者等待运行)的进程个数
b处于不可中断的进程个数(被阻塞的队列长度)
memory:
swpd 交换内存的使用量
free 空闲内存的总量
buff 用于buffer的内存总量
cache 用于cache的内存总量
swap
si 从磁盘交换到内存的数据速率(kb/s)
so 从内存到磁盘的数据的速率(kb/s)
io
bi: 从块设备读入数据到系统的速率
bo: 从系统到块设备
cpu
us 用户空间
sy 系统空间
id 空闲
wa 等待
st 被偷走的时间
作业管理
后台运行
- ctrl +z
- command & 会输出到屏幕
- nohup command & 不会输出到屏幕
5. systemctl
管理服务的,语法:
- systemctl 参数 服务
同时可以管理多个服务,参数配置如下:
systemctl start sshd nginx redis 启动
stop 停止
restart 重启
reload 重新加载配置文件
status 查看服务的状态
enable 开机自启动
disable 关闭开机自启动
systemctl list-unit-files |grep enabled 查询哪些服务是开机自启动的
6. 安全相关
firewalld\iptables
firewalld
iptables -F 清空防火墙规则
selinux
setenforce 0 临时关闭
getenforce 查看selinux的状态
配置文件在/etc/selinux/config
SELINUX=disabled
7. 虚拟环境管理
虚拟环境
python3 创建虚拟环境
python3 -m venv name 在当前目录下生成一个文件夹
source name/bin/activate 进入虚拟环境
deactivate 退出虚拟环境
python2 管理虚拟环境
pip install virtualenv -i https://pypi.douban.com/simple
生成虚拟环境
virtualenv --no-site-packages --python=python test
--no-site-packages 生成一个干净的虚拟环境
--python 用来指定以哪个python来生成虚拟环境
确保环境一致
在windows执行
pip freeze > requirements.txt
把文件传到linux上面
切换虚拟环境
pip install -r requirements.txt
virtualenvwrapper
a. 下载安装virtualenvwrapper
pip3 install virtualenvwrapper
b. 打开环境变量并配置文件,直接在末尾追加即可
全局配置文件:/etc/profile # 每个用户登录都生效
用户个人配置文件:~/.bash.profile
export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境 export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 #指定python解释器 source /opt/python34/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本 # 注意:如创建虚拟环境时提示没有第二个参数执行:pip3 install --upgrade virtualenv==16.7.9 # 如果创建虚拟环境报错如下:(在目录中未找到virtualenv命令) which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) ERROR: virtualenvwrapper could not find virtualenv in your path # 进行以下操作:将python环境下的virtualenv拷贝至/usr/bin/目录下: [root@localhost ~]# cd /usr/bin/ # 查找是否存在virtualenv [root@localhost bin]# ls -al | grep virtualenv [root@localhost bin]# cd /usr/local/python3/bin/ # 建立硬链接到/usr/bin/ [root@localhost bin]# ln virtualenv /usr/bin/virtualenv # 此时就可以正常创建了 [root@localhost bin]# mkvirtualenv djangotest
c. 登录或重新加载配置文件
读取文件,使得生效,此时已经可以使用virtalenvwrapper source .bash_profile 加载.bash_profile文件
使用:
mkvirtualenv django3 创建虚拟环境并进入 lsvirtualenv 列出所有的虚拟环境 workon django3 直接切换虚拟环境 cdvirtualenv 直接切换到虚拟环境 cdsitepackages 切换到虚拟环境的三方包 lssitepackages 列出当前虚拟环境的三方包 rmvirtualenv 删除虚拟环境 deactivate 退出虚拟环境