menu Chancel's Blog
rss_feed lightbulb_outline

我的笔记

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

两种方法

  1. 使用return方法,推荐使用
server{
    listen 80;
    server_name www.example.com;
    return 301 https://$server_name$request_uri;
}
  1. 使用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 即可可以查询到占用端口程序的PID

使用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钩子

  1. 创建swap文件(如已有swap分区也可以使用)
  2. 修改引导内核
  3. 修改内核中的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文件所在分区UUIDswapfile文件的偏移量

# 查询所有分区的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 进行休眠测试

资料参考

休眠设置 - Arch Wiki

swap - Arch wiki

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

解决步骤

  1. 下载 PKGBUILD.zip这两个包
  2. 解压出来,切换到解压后的目录
  3. 运行makepkg -i,然后按下ALT+F2输入r点击确定重启Gnome界面

再测试动画是否依旧不流畅

Operating System Linux 2019-10-12 10:37:14

7 of 11 | A total of 110