我的笔记
Linux - 命令定向输出到粘贴板
使用XSEL便可以复制命令行输出到粘贴板,便于分析一些在命令行里无法清楚判断的日志输出
# 复制直接输出的内容直接使用xsel
cat test.txt | xsel
# 复制类似journalctl这种系统日志输出(需要滚动)的日志则需要添加 -b 的标志
journalctl -xe | xsel -b
Operating System Linux 2019-10-12 14:19:26
Nginx - 强制Http跳转到Https
两种方法
- 使用return方法,推荐使用
server{
listen 80;
server_name www.example.com;
return 301 https://$server_name$request_uri;
}
- 使用rewrite方法,不推荐使用
server{
listen 80;
server_name www.example.com;
rewrite ^(.*) https://$server_name$request_uri;
}
Develop Base 2019-10-12 14:18:45
Python3 - 设置urllib请求代理(爬虫代理)
很多时候用Python写爬虫程序需要设置代理网络,网上好像也没有很明确的设置选项,这里提供urllib代理的方法
适用于
- Python3.5版本
- urllib工具包
def set_proxy():
httpproxy_handler = urllib.request.ProxyHandler(
{'http': '192.168.1.1:34232'})
opener = urllib.request.build_opener(
httpproxy_handler, urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
Develop Technology Python 2019-10-12 14:18:10
MySQL - 创建、修改、删除、授权
-- 创建数据库
create schema <databse_name> default character set utf8 collate utf8_general_ci;
-- 用户授权数据库
GRANT select,update,insert,delete,create on <数据库名>.* to <用户名>;
-- 立即生效
flush privileges;
-- 取消用户所有数据库(表)权限
REVIKE ALL ON *.* from <用户名>;
-- 立即生效
flush privileges;
-- 删除数据库
drop database <数据库名>;
-- 创建表
CREATE TABLE `sample_database`.`t_sample` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
-- 修改表编码
alter table `sample_database`.`t_sample` convert to character set utf8;
-- 恢复自增序号为1
DELETE FROM `sample_database`.`t_sample` ;
ALTER TABLE `sample_database`.`t_sample` auto_increment = 1;
-- 恢复自增序号为1
TRUNCATE TABLE t_books_author;
-- 删除表
DROP TABLE `sample_database`.`t_sample` ;
Develop Base Database 2019-10-12 14:16:36
Windows - 快速定位占用端口程序
使用netstat -aon|findstr
使用tasklist|findstr
PS C:\Users\ycs10> netstat -aon|findstr "3389"
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1380
TCP 192.168.11.193:9434 192.168.11.155:3389 ESTABLISHED 4088
TCP 192.168.11.193:11526 192.168.11.214:3389 ESTABLISHED 4088
TCP [::]:3389 [::]:0 LISTENING 1380
UDP 0.0.0.0:3389 *:* 1380
UDP [::]:3389 *:* 1380
PS C:\Users\ycs10> tasklist|findstr "1380"
svchost.exe 1380 Services 0 15,464 K
chrome.exe 13808 Console 1 13,440
Network Windows 2019-10-12 14:14:25
Windows - 路由追踪
指令:tracert
通过路由追踪可以清晰的得到我们的网络请求中断位置,是常用于判断网络异常/服务器异常问题的利器
PS C:\WINDOWS\system32> tracert 45.12.109.68
通过最多 30 个跃点跟踪到 45.12.109.68 的路由
1 1 ms 1 ms 2 ms 192.168.11.1
2 28 ms 11 ms 12 ms 1.72.137.219.broad.gz.gd.dynamic.163data.com.cn [219.137.72.1]
3 18 ms 13 ms 18 ms 119.145.81.157
4 17 ms 9 ms 9 ms 61.144.3.30
5 * 9 ms 13 ms 202.97.94.142
6 20 ms 10 ms 16 ms 202.97.94.102
7 204 ms 206 ms 206 ms 202.97.89.138
8 203 ms 228 ms 204 ms ae3.paloalto2.pao.seabone.net [195.22.206.169]
9 189 ms 186 ms 189 ms ae14.losangeles2.loa.seabone.net [89.221.35.144]
10 184 ms 188 ms 179 ms profuse.losangeles2.loa.seabone.net [89.221.35.147]
11 * * * 请求超时。
12 * * 1775 ms 104.149.2.158
13 179 ms 178 ms * 185.232.15.196
14 * * * 请求超时。
15 * * * 请求超时。
16 * * * 请求超时。
17 * * * 请求超时。
18 * * * 请求超时。
19 * * * 请求超时。
20 * * * 请求超时。
21 * * * 请求超时。
22 * * * 请求超时。
23 * * * 请求超时。
24 * * * 请求超时。
25 * * * 请求超时。
26 * * * 请求超时。
27 * * * 请求超时。
28 * * * 请求超时。
29 * * * 请求超时。
30 * * * 请求超时。
跟踪完成。
Network Windows 2019-10-12 14:14:34
ArchLinux - Manjaro创建交换区文件并设置休眠
设置Manjaro的休眠分为三步,第一步是创建swapfile交换区,第二步是修改引导内核,第三步则是修改HOOKS钩子
- 创建swap文件(如已有swap分区也可以使用)
- 修改引导内核
- 修改内核中的HOOKS钩子
TIP 整个过程无需重启
首先我们需要创建swapfile文件区(如果是swap分区,请参考本文结合资料引用处的ArchWiki进行设置)
# 查看swap分区信息(没有设置则没有输出)
swapon --show
# 创建大小为0的文件
sudo truncate -s 0 /swapfile
# 使用fallocate 创建指定大小的文件(单位M或者G)
# 1. 如果文件系统不是F2FS,使用下面的命令即可
sudo fallocate -l 32G /swapfile
# 2. 如果文件系统是F2FS,使用下面的命令
dd if=/dev/zero of=/swapfile bs=1G count=32 status=progress
# 授权并格式化
sudo chmod 600 /swapfile
sudo mkswap /swapfile
# 启用swap
sudo swapon /swapfile
# 查看swap分区信息(如有输出则说明成功)
swapon --show
# 添加开机自动挂载swapfile文件
sudo vim /etc/fstab
/swapfile none swap defaults 0 0
swap文件设置完成,接下来我们要改动grub和内核Hook来完成休眠设置
获取swapfile文件所在分区UUID与swapfile文件的偏移量
# 查询所有分区的UUID,记下swapfile文件所在分区的UUID
sudo lsblk -f
# 查询swapfile文件的偏移量,第一行(显示0行)的physical_offset即为偏移量,记下这个偏移量
sudo filefrag -v /swapfile
利用上述记下的swapfile所在分区UUID以及swapfile文件偏移量来设置内核参数并生成grub引导
sudo vim /etc/default/grub
# 假设原来的GRUB_CMDLINE_LINUX_DEFAULT值为
GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_pstate=enable”
# 修改后的值内容(其实就是追加到GRUB_CMDLINE_LINUX_DEFAULT值后面)
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_pstate=enable resume=UUID=[swapfile文件所在分区的UUID]resume_offset=[swapfile文件的偏移量]"
sudo update-grub
第三步配置initramfs的resume钩子并重新生成 initramfs 镜像
sudo vim /etc/mkinitcpio.conf
# 假设原来HOOKS的值如下
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
# 修改后的值如下(假如使用lvm分区,则要注意将resume放到lvm后面
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"
# 重新生成initramfs镜像(51是我的Linux内核版本号,可以使用uname -a查看)
mkinitcpio -p linux51
此时休眠就可以正常使用了,使用 systemctl hibernate 进行休眠测试
资料参考
Operating System Linux 2020-06-18 16:53:19
crontab - 定时写法例子
crontab 总是隔一段时间就需要使用一次,但每次都需要定义一些比较奇怪的时间点,每次都查询一下相关格式觉得很麻烦,学习一下各种奇奇怪怪的写法
首先看一下crontab的使用方法,这个很简单
# 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
如上面显示,*
号可以理解为中文里的“每”的意思,以第一个*
为例,触发时机为
- 每分钟执行一次:'*'
- 每5分钟执行一次:'*/5'
- 第10分钟开始执行:'10'
- 第5分钟和第10分钟各执行一次:'5,10'(以','隔开两个时间点)
- 第10分钟到第20分钟每分钟执行一次:'10,20/1'或者'10-20/1'
同理,除了分钟适应这种写法外,小时/天数/月数/星期数均适应这种写法
同时还要注意月份/星期数均可以用英文代替(仔细看上面使用方法处的注释),例如每周一到周三0点执行某任务可以写成
0 0 * * mon-wed echo 'wowotou'
Develop Base Linux 2019-10-12 14:08:14
hdparm - Linux硬盘休眠
Linux的硬盘休眠机制非常自由灵活,借助hdparm我们可以自由定制硬盘的休眠时间,大部分发行版都自带了hdparm,如果没有请自行安装
了解更多关于hdparm的使用可以使用man hdparm查看,这里简单列举一下常用的指令
查询版本
hdparm -V
查看硬盘休眠情况
sudo hdpram -C /dev/sd*
让硬盘立即休眠
sudo hdparm -Y /dev/sdb
(重点)设置硬盘一定时间内无访问后自动休眠
sudo hdparm -S 244 /dev/sdb
参数取值可以参考man hdparm里的,这里摘录出来仅供参考
- 30 = 2分钟30秒
- 60 = 5分钟
- 120 = 10分钟
- 180 = 15分钟
- 241 = 30分钟
- 242 = 1小时
- 243 = 1.5小时
- 244 = 2小时
注:硬盘休眠不宜太频繁,频繁唤醒很伤硬盘,弄巧成拙,请根据具体的场景决定休眠条件
Operating System Linux 2020-05-11 01:47:39
Gnome - 动画卡顿不流畅
昨天Manjaro更换下桌面系统,切换到Gnome之后感觉还不错,但有点小问题,按Super键的时候进入菜单的动画很卡顿,搜索更卡顿,只要涉及到动画部分都很卡顿
上网查找了一下,发现这个Bug提了很久但还没解决,在论坛处看到一个临时解决方案,实测是有效果的
Gnome提问问题链接:Fix for GNOME 3.24 animation stutter/lag with Nvidia
问题中描述的临时解决方案:[SOLVED] Animation lag after GNOME 3.24 Update
解决步骤
- 下载 PKGBUILD.zip这两个包
- 解压出来,切换到解压后的目录
- 运行makepkg -i,然后按下ALT+F2输入r点击确定重启Gnome界面
再测试动画是否依旧不流畅
Operating System Linux 2019-10-12 10:37:14