[置顶] 日常学习手记
FFmpeg 常用命令
合并视频
for f in *.flv; do echo "file '$f'" >> mylist.txt; done
ffmpeg -f concat -i mylist.txt -c copy output.flv
切割视频
ffmpeg -ss 00:30:00 -t 00:10:00 -i input.mp4 -c copy output.mp4
TS 转 MP4
ffmpeg -i input.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc output.mp4
Linux 常用命令
取第2列
awk '{print $2}'
取第2行
sed -n '2p'
取前10行
head -n 10
取后10行
tail -n 10
搜索文件
按字符串搜索
grep -rl 'keyword' /home
按16进制搜索
grep -rlP ^1cff /home
按文件名搜索
find /home -name '*keyword*'
HSTS Preload List
SSL 性能测试
https://www.ssllabs.com/ssltest/
Caddy 配置
跳转到 https
http://www.domain.com {
redir 301 {
/ https://{host}{uri}
}
}
反向代理
https://www.domain.com {
proxy /web1 103.101.202.99:80 {
without /web1
}
proxy /web2 103.101.202.99:80
log /var/log/caddy.log
}
Nginx 配置
默认站点配置
server {
listen 80 default;
index index.html index.htm;
root /home/wwwroot/default;
error_page 400 /ErrorPages/400.html;
error_page 403 /ErrorPages/403.html;
error_page 404 /ErrorPages/404.html;
error_page 502 /ErrorPages/502.html;
error_page 500 /ErrorPages/500.html;
access_log /home/wwwlogs/default-access.log;
error_log /home/wwwlogs/default-error.log;
}
SSL 配置
ssl on;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 私钥和证书
ssl_certificate_key /home/ssl/domain.com.key;
ssl_certificate /home/ssl/domain.com.crt;
# DH 密钥参数
ssl_dhparam /home/ssl/domain.com-dhparam.pem;
# HSTS 强制重定向 HTTPS
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
Rewrite 重定向
rewrite ^(.*)$ /index.html;
rewrite ^(.*)$ http://www.domain.com$1;
反向代理
location / {
proxy_pass http://101.22.33.44:80;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Python 文件头部
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
#
# @Version : 1.0
# @Time : 2018/1/1 10:10
# @Author : Your Name
# @File : test.py
#
# Here is Description
Shell 文件头部
#!/bin/sh
或 #!/bin/bash
开启路由功能
vi /etc/sysctl.conf
修改以下内容:
net.ipv4.ip_forward=1
保存
sysctl -p
iptables 使用方法
# 查看 iptables
/sbin/iptables -nL
/sbin/iptables -t nat -nL
# 保存 iptables 到文件
/sbin/iptables-save > iptables.save
# 从文件恢复 iptables
/sbin/iptables-restore < iptables.save
# 清空所有表
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t nat -Z
# 允许 loopback 接口 INPUT
/sbin/iptables -A INPUT -i lo -j ACCEPT
# 允许 icmp 协议 INPUT
/sbin/iptables -A INPUT -p icmp -j ACCEPT
# 允许 tcp 协议 22 端口 INPUT
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许 101.123.78.90 访问本机 UDP 53 端口
/sbin/iptables -A INPUT -s 101.123.78.90 -p udp --dport 53 -j ACCEPT
# 允许 已经建立连接、关联的数据包 INPUT (放行回包)
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 从 ppp0 出外网,用 ppp0 的 IP 地址做 NAT 转换
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 源地址 10.0.0.0/24 从 eth0 出外网,用 eth0 的 IP 地址做 NAT 转换
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
# 源地址 10.0.0.0/24 从 eth0 出外网,用 67.88.99.101 做 SNAT 转换
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to 67.88.99.101
# 从 eth0 进来的 tcp 101 端口,用 10.0.0.2 做 DNAT 转换,转发到 203 端口
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 101 -j DNAT --to-destination 10.0.0.2:203
# 从 eth0 进来的 tcp 102 和 tcp 103 端口,转发到本机 104 端口
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dport 102,103 -j REDIRECT --to-ports 104
# 默认 DROP INPUT 链
/sbin/iptables -P INPUT DROP
Python pip 源设置
Linux: ~/.pip/pip.conf
Windows C:\Users\xxx\pip\pip.ini
[global]
index-url = https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
[install]
trusted-host = mirrors.ustc.edu.cn
Git 代理
# socks5 代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
# http/https 代理
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'https://127.0.0.1:1080'
文件权限 rwx 数值
r 表示 read ,读取权限,代表数字 4
w 表示 write ,写入权限,代表数字 2
x 表示 execute ,执行权限,代表数字 1
SSH 使用方法
安装
apt install openssh-server
允许 root 登录
vi /etc/ssh/sshd_config
修改以下内容:
PermitRootLogin yes # 允许密码和密钥登录
PermitRootLogin prohibit-password # 只允许密钥登录
保存
systemctl restart sshd.service
生成公私钥
ssh-keygen -t rsa
在 ~/.ssh/
自动生成 id_rsa.pub
和 id_rsa
公私钥对
id_rsa.pub 公钥文件权限数值 644
id_rsa 私钥文件权限数值 600
使用私钥登录
服务器端:
公钥按行放在 ~/.ssh/authorized_keys 文件里
chmod 644 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
客户端:
私钥放在 ~/.ssh/ 目录下
chmod 600 ~/.ssh/id_rsa
ssh -i ~/.ssh/id_rsa root@hostname
网卡接口配置
vi /etc/network/interfaces
DHCP 自动获取 IP
auto eth0
iface eth0 inet dhcp
静态 IP
auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
桥接 Bridge
auto vmbr0
iface vmbr0 inet static
address 10.0.0.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
修改 DNS
方法一
vi /etc/network/interfaces
在外网网卡添加以下内容:
dns-nameservers 114.114.114.114 8.8.8.8
保存
systemctl restart networking.service
方法二
vi /etc/resolvconf/resolv.conf.d
添加以下内容:
nameserver 114.114.114.114
nameserver 8.8.8.8
保存
resolvconf
修改网卡名称为 eth0
vi /etc/default/grub
修改以下内容:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
grub-mkconfig -o /boot/grub/grub.cfg
重启
对文件操作 Operation not permitted
解除文件的锁定属性:chattr -i [file]
sysctl -p 时报错:error: permission denied on key
检查 /etc/sysctl.conf
是否正确
如果是 OpenVZ 主机,请换成 XEN 或 KVM 主机
make 编译陷入死循环
检查系统时间是否准确
Comments