menu

Chancel - 技巧

rss_feed lightbulb_outline

技巧列表(50)

ArchLinux - Manjaro创建交换区文件并设置休眠

设置Manjaro的休眠分为三步,第一步是创建swapfile交换区,第二步是修改引导内核,第三步则是修改HOOKS钩子

  1. 创建swap文件(如已有swap分区也可以使用)
  2. 修改引导内核
  3. 修改内核中的HOOKS钩子

首先我们需要创建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

接着获取swapfile文件所在分区UUIDswapfile文件的偏移量

# 查询所有分区的UUID
sudo lsblk -f
# 查询swapfile文件的偏移量,第一行(显示0行)的physical_offset即为偏移量
sudo filefrag -v /swapfile

利用分区UUID以及文件偏移量设置内核参数并生成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

此时休眠就可以正常使用了

资料参考

休眠设置 - Arch Wiki

swap - Arch wiki

其他技巧Linux Server2019-10-12 14:13:08

Linux - 硬盘测速命令技巧

假设新购入一块SSD硬盘/机械硬盘并接入Linux系统中,通过dd & hdparm两个Linux自带工具可以快速测出该硬盘的性能水准

这里暂定接入的设备为/dev/sdc

hdparm测速方法

sudo hdparm -tT /dev/sdc

// 读速输出如下
/dev/sdc:
 Timing cached reads:   24384 MB in  1.99 seconds = 12263.71 MB/sec
 Timing buffered disk reads: 454 MB in  3.00 seconds = 151.25 MB/sec

hdparm的可以简单快捷的测出硬盘的读速,但这个测试方法过于简单,如果需要更确切的性能数据,更推荐使用dd

dd的测速方法

sudo dd if=/dev/zero of=/dev/sdc bs=8k count=10000 oflag=direct

// 写入速度输出如下
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 7.25587 s, 11.3 MB/s

sudo dd if=/dev/sdc of=/dev/null bs=8k count=10000 

// 读取速度输出如下
10000+0 records in
10000+0 records out
81920000 bytes (82 MB, 78 MiB) copied, 0.702369 s, 117 MB/s

dd测速命令解释

首先是两个系统自带设备(即上面测试用到的两个本地设备)

  • /dev/null:空设备,写入该设备不会产生IO(形似黑洞,写入即被丢弃),所以可以用来做新盘测试读速的写入对象
  • /dev/zero:零设备,可以无限提供空字符,一般用来生成特定大文件的虚拟设备

另外类似的设备还有/dev/random、/dev/urandom之类的,有兴趣可自行搜索

参数

  • bs:一次写入大小,block size
  • count:写入次数,一般联合bs进行测试
  • skip(可选):原文件读取的起始位置(单位与bs一致)
  • seek(可选):目标文件写入的起始位置(单位与bs一致)
  • oflag:表示写入的符号标志(通常代表不同的写入方式),direct表示直接I/O写入而不使用缓存

dd测速忽略了硬盘缓存等特性,测试的数据不够严谨,但作为个人测速使用相对还是比较直观的

其他技巧2020-02-14 01:41:08

x-prober - 一款精美的 PHP 探針

kmvan/x-prober - github

安装非常简单,点击release然后下载prober.php

放到PHP目录后更改名称为index.php(视情况而定)即可

效果如图

Github Star2020-01-07 17:04:05

Wol - 远程唤醒计算机

经常做过Wol远程唤醒,但没细究过里面的设置,这里归纳一下如何设置以及为什么要这样设置,以一台Windows10的机器为例子

首先我们需要更改BIOS设置,大部分情况下只需要注意打开有以下关键字的选项为Enabled状态即可

  • Wake on lan

其次是开机后在Windows10里,按Win+X打开快捷菜单,按M打开设备管理器,找到网络设配器并展开,选择你的网卡,有线网卡通常是Realtek开头的,右键打开属性对话框,选择选项卡电源管理

勾选如下两个选项

  • 允许计算机关闭此设备以节约电源(这里可以理解为接管网卡电源)
  • 允许此设备唤醒计算机

可选选项

  • 只允许幻数据包唤醒计算机(不勾选则任何数据包都可以激活你的电脑,勾选则只允许魔术包激活你的计算机)

再选中高级选项卡,查看以下两个值,确保是 Enabled状态

  • Wake on Magic Packet
  • Wake on pattern match

确保下面这个选项是 Disabled状态(有些计算机没有这个选项也很正常,注意,此选项若是启用,则在关机一段时间后无法唤醒)

  • Wake on lan after shutdown

关机后,查看网口提示灯是否亮着,如果亮着则说明设置成功,但请注意如果网口提示灯没有亮并不代表失败!

有些机型是默认设置即使开启WOL唤醒网口提示灯也不会亮的,我们需要尝试使用唤醒计算机来最终确认是否设置成功

发送WOL包的方法很多,这里以Ubuntu 18.04为例子,安装etherwake并发送wol包

chancel@chancel-nas ~ » sudo apt install etherwake                                                                                                                                      100 ↵ Reading package lists... Done
Building dependency tree
Reading state information... Done
...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
chancel@chancel-nas ~ » ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 70:85:c2:82:20:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.11/24 brd 192.168.11.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7285:c2ff:fe82:2027/64 scope link
       valid_lft forever preferred_lft forever
chancel@chancel-nas ~ » sudo etherwake -i enp1s0 -b 3C:97:3E:E0:01:DC

其他技巧2019-11-10 23:42:51

Webmin - 基于Web网站的系统管理工具

Webmin is a web-based system administration tool for Unix-like servers, and services with over 1,000,000 installations worldwide. Using it, it is possible to configure operating system internals, such as users, disk quotas, services or configuration files, as well as modify, and control open-source apps, such as BIND DNS Server, Apache HTTP Server, PHP, MySQL, and many more.

强大而灵活的基于Web的服务器管理控制面板

个人一直很喜欢宝塔面板,但出于对国产软件的无信心,一直想找一款类似的程序(开源更好)来替代宝塔面板,无意间发现了Webmin如获至宝!

安装方法也很简单,Linux大部分发行版直接运行 setup.sh 按照提示一步一步安装

Webmin - Powerful and flexible web-based server management control panel

由于支持主题更改(重点!)所以界面UI选择空间非常大,这里可以参考以下二款主题!

Official theme for the best server management panel of the 21st Century

BWTheme - A simple and beautiful theme for Webmin and Usermin made using Bootstrap and Font Awesome

Web网站Linux Server2019-10-30 11:12:11

Nounplus/Grammar Check Online.. - 英文语法检查工具

Smart Grammar Checker Online Tool free - nounplus

  • 一款在线web检查英文语法工具

gingersoftware

  • 支持多个平台的英文语法检查工具

Grammarly Spell Checker - Chrome插件

  • Chrome扩展插件检查英文语法

以上均为工具,仅适用于英文不太好的水平

Web网站English2019-10-17 16:04:40

Git - Bash脚本判断本地仓库代码是否需要更新

今晚找到一个不错的脚本,在这里分享一下

#!/bin/sh

UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
    echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
    echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
    echo "Need to push"
else
    echo "Diverged"
fi

执行这个脚本就可以获取到Github远程仓库与本地仓库的版本差别

注意git的旧版本不允许使用@,所以你可能需要使用@ {0}

后端技术Git2019-10-16 17:49:36

Vim - 忘记sudo之后如何保存需要root权限的文件?

在Linux下编辑文件保存时经常会遇到

"readonly-file-name" E212: Can't open file for writing

这个时候就很尴尬了,尤其是修改很大的文件,无法保存是一件头疼的事情,一般这种情况下你只好先另存文件再重新打开编辑文件,对于只是忘了敲sudo命令来说这样的操作太过于繁琐了

其实Vim是支持在编辑状态下直接获取Root权限而无需退出Vim的,只需要在Vim里执行这行命令即可

:w !sudo tee %

后端技术Linux Server2019-10-16 17:49:16

Git Stash - 不提交代码保存当前代码的修改并切换分支进行其他工作

Git 工具 - 储藏(Stashing)

经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。

重点

  • git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中
  • git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复
  • git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
  • git stash clear: 清空Git栈

例子

# chancel @ chancel-cp in /tmp/stash on git:master o [12:04:03] 
$ git status
On branch master
nothing to commit, working tree clean

# chancel @ chancel-cp in /tmp/stash on git:master o [12:05:11] C:130
$ echo "I'm fine,fuck you" > hello.py

# chancel @ chancel-cp in /tmp/stash on git:master x [12:05:17] 
$ ll
total 8.0K
-rw-r--r-- 1 chancel chancel  4  9月  6 12:03 123.txt
-rw-r--r-- 1 chancel chancel 18  9月  6 12:05 hello.py

# chancel @ chancel-cp in /tmp/stash on git:master x [12:05:18] 
$ git add .

# chancel @ chancel-cp in /tmp/stash on git:master x [12:05:21] 
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.py


# chancel @ chancel-cp in /tmp/stash on git:master x [12:05:24] 
$ git stash
Saved working directory and index state WIP on master: a404cee first commit

# chancel @ chancel-cp in /tmp/stash on git:master o [12:05:37] 
$ git status
On branch master
nothing to commit, working tree clean

# chancel @ chancel-cp in /tmp/stash on git:master o [12:05:41] 
$ ll     
total 4.0K
-rw-r--r-- 1 chancel chancel 4  9月  6 12:03 123.txt

# chancel @ chancel-cp in /tmp/stash on git:master o [12:05:54] 
$ echo "hello" > hello.txt

# chancel @ chancel-cp in /tmp/stash on git:master x [12:06:17] 
$ ll 
total 8.0K
-rw-r--r-- 1 chancel chancel 4  9月  6 12:03 123.txt
-rw-r--r-- 1 chancel chancel 6  9月  6 12:06 hello.txt

# chancel @ chancel-cp in /tmp/stash on git:master x [12:06:21] 
$ git add hello.txt 

# chancel @ chancel-cp in /tmp/stash on git:master x [12:06:26] 
$ git stash
Saved working directory and index state WIP on master: a404cee first commit

# chancel @ chancel-cp in /tmp/stash on git:master x [12:07:20] 
$ ll
total 8.0K
-rw-r--r-- 1 chancel chancel 4  9月  6 12:03 123.txt
-rw-r--r-- 1 chancel chancel 6  9月  6 12:07 hello.txt


# chancel @ chancel-cp in /tmp/stash on git:master x [12:07:45] 
$ git stash pop
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.txt

Dropped refs/stash@{0} (b9963709ffa5959d2341b31378d9b3457a2b9798)

# chancel @ chancel-cp in /tmp/stash on git:master x [12:07:56] 
$ ll
total 8.0K
-rw-r--r-- 1 chancel chancel 4  9月  6 12:03 123.txt
-rw-r--r-- 1 chancel chancel 6  9月  6 12:07 hello.txt

# chancel @ chancel-cp in /tmp/stash on git:master x [12:07:58] 
$ git stash pop
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.py
    new file:   hello.txt

Dropped refs/stash@{0} (172bdcff963c2786becbb9acd526d968b279b3e0)

# chancel @ chancel-cp in /tmp/stash on git:master x [12:08:02] 
$ ll
total 12K
-rw-r--r-- 1 chancel chancel  4  9月  6 12:03 123.txt
-rw-r--r-- 1 chancel chancel 18  9月  6 12:08 hello.py
-rw-r--r-- 1 chancel chancel  6  9月  6 12:07 hello.txt

后端技术Git2019-10-16 17:48:46

Windows - 快速定位占用端口程序

使用netstat -aon|findstr <port>即可可以查询到占用端口程序的PID

使用tasklist|findstr <pid>即可看到占用程序的相关信息

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

其他技巧CMD Shell2019-10-16 17:47:41

搜索

分类

3 Web网站
6 Github Star
24 工具软件
6 其他技巧
11 后端技术

标签