晒晒我家小院子

0%

日志级别

1
2
3
4
5
6
import logging
logging.debug("Hello")
logging.info("Hello")
logging.warning("Hello") # 默认
logging.error("Hello")
logging.critical("Hello")

控制级别

1
2
import logging
logging.basicConfig(level=logging.NOTSET) # 设置日志级别

控制日志格式

1
2
3
logging.basicConfig(level=logging.DEBUG,
format='[%(levelname)s][%(asctime)s][%(filename)s][%(message)s]')
# 推荐格式'[%(levelname)s][%(asctime)s][%(filename)s][%(message)s]'

基本操作流程(经典案例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import logging
import os

logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # 设置为最低

log_dir = os.path.join(os.getcwd(), 'Logs')
log_file = os.path.join(log_dir, 'spider_error.log')
if not os.path.exists(log_dir):
os.mkdir(log_dir)

file_handler = logging.FileHandler(log_file, mode='a') # 日志文件
file_handler.setLevel(logging.ERROR)
file_handler.setFormatter(logging.Formatter('[%(levelname)s][%(asctime)s][%(message)s]'))
logger.addHandler(file_handler)

console_handler = logging.StreamHandler() # 控制台
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(logging.Formatter('[%(levelname)s][%(asctime)s][%(message)s]'))
logger.addHandler(console_handler)
# 所有日志都到logger里面,需要输出到哪里,就过滤,拷贝到哪里。

logging参考连接

一些好用的工具

axel

1
2
3
# 多线程下载工具-替代curl和wget
# 使用
axel -n 20 http://download.redis.io/releases/redis-5.0.7.tar.gz

lrzsz

1
2
3
4
# 一款linux下命令行界面上支持上传和下载的第三方工具
rz # 选择文件进行上传
sz 文件名 # sz后面跟文件名可以进行文件从linux上面下载
yum install -y lrzsz # yum 安装完毕之后可以直接rz尝试使用

kill

1
2
3
4
5
python3
import subprocess
import re
(status, output) = subprocess.getstatusoutput('ps -ef | grep python3')
subprocess.getstatusoutput('kill -9 {}'.format(' '.join(set(re.findall(r'\d{3,6}', output)))))

防火墙

开启端口

1
firewall-cmd --zone=public --add-port=80/tcp --permanent

查询端口号80 是否开启

1
firewall-cmd --query-port=80/tcp

重启防火墙

1
firewall-cmd --reload

查询有哪些端口是开启的

1
firewall-cmd --list-port

关闭防火墙

1
systemctl stop firewalld.service

禁止防火墙开机自启

1
systemctl disable firewalld.service

启动防火墙

1
systemctl start firewalld

杀死占用端口的进程

1
2
3
4
5
6
7
8
# 查看占用端口的进程
netstat -tlnp|grep 6379 # t-tcp,l-listen,n-不解析(速度快),p-process
# 一次性的清除占用80端口的程序
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
# 终止进程
kill 5014
# 强制终止进程
kill -9 5014 # 是pid

Linux笔记

用户管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1.添加用户
useradd xm
useradd -d /home/xm xm # 指定家目录
useradd -g gxm xm # 指定用户组gxm
# 2.密码
passwd xm
# 3.删除用户
userdel xm
userdel -r xm # 删除家目录
# 4.查询用户信息
id xm
# 5.切换用户
su xm
exit # 退回原来的用户
# 6.修改用户的组
usermod -g gxm xm
# 7.修改用户家目录
usermod -d /home/xm xm
用户组管理
1
2
3
4
# 1.添加用户组
groupadd xm
# 2.删除用户组
groupdel xm
用户相关文件
1
2
3
4
5
6
# 用户的配置文件,记录用户的各种信息(用户名,用户id,组id,家目录,shell)
/etc/passwd
# 密码的配置文件(登录名:加密口令:最后修改时间:最小间隔:最大间隔:警告时间:不活动时间:失效时间:标志)
/etc/shadow
# 组的配置文件(组名,组id)
/etc/group
文件权限管理
1
2
3
4
5
6
7
chown xm a.txt  # 修改所属用户 
chgrp gxm a.txt # 修改所属组
chown xm:gxm a.txt # 同时修改(特殊用法)
-R 递归生效
# 修改文件权限 u g o a 可以 +- rwx
chmod o-x a.txt
chmod 421 a.txt # r-- -w- --x
任务调度
1
2
3
4
5
6
7
# /etc/crontab  # 服务名为 crond  
# systemctl restart crond
crontab
-e 编辑 # 格式*/1 8,12 * * 0-7 ll /root >> /root/to.log # *和,和-和*/n
# 格式 * * * * * /home/mytask1.sh # 直接跟shell脚本 # 要注意执行权限
-l 查询
-r 删除当前用户所有的crontab任务