menu Chancel's Blog
rss_feed lightbulb_outline

我的笔记

Genymotion - Error while creating virtualbox host-only interface

我的系统环境信息

  • Manjaro Linux 64Bit
  • Linux version 5.10.18-1

安装Genymotion

# 先更新系统
sudo pacman -Syuu
yay -S genymotion

然后运行Genymotion,提示错误

Error while creating virtualbox host-only interface

仔细查看安装输出,安装完成后需要运行命令

sudo modprobe vboxdrv

但在运行之后,提示输出找不到 Module vboxdrv not found,于是执行

sudo pacman -S virtualbox linux510-virtualbox-host-modules

linux510-virtualbox-host-modules 这个包取决于你的Linux内核版本,可以使用 cat /proc/version 查看内核版本

最后再次运行以下指令查看是否有异常提示

sudo modprobe vboxdrv
sudo modinfo vboxdrv
sudo modprobe vboxnetadp
sudo modprobe vboxnetflt

再次启动Genymotion,一切正常

Software Tools Linux 2021-03-02 20:59:20

Manjaro - 安装Fcitx5搭配肥猫百万词库

首先卸载所有关于fcitx4的包

sudo pacman -Rs $(pacman -Qsq fcitx)

安装fcitx5

sudo pacman -S fcitx5-im fcitx5-chinese-addons

配置环境变量 vim ~/.pam_environment

GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE  DEFAULT=fcitx
XMODIFIERS    DEFAULT=\@im=fcitx
SDL_IM_MODULE DEFAULT=fcitx

安装肥猫百万词库(从wiki上加载,按照官方说法并无版权风险)

yay -S fcitx5-pinyin-zhwiki

注销重启PC后,打开 fcitx Configuration,选择添加拼音即可使用

PS:如何验证词库加载成功?打个“贾跃亭”试试看能不能匹配出来

参考资料

Operating System Linux 2021-02-27 14:06:36

Linux 命令精进04

Linux的键盘操作技巧非常多,《The Linux Command Line》这本书里提供了不少有趣的操作组合,这里挑选一些常用的做一下备忘

移动光标

  • Ctrl - A 移动光标到行首
  • Ctrl - E 移动光标到行尾
  • Ctrl - L 清空屏幕,移动光标到左上角(形同Clear命令)

修改文本

  • Ctrl - T 交换当前光标前的2个字符位置
  • Alt - T 交换当前光标前后2个单词位置(区分单词通常是“-”或者“空格”)
  • Alt - L 把从光标位置到字尾的字符转换成小写字母(Lower)
  • Alt - U 把从光标位置到字尾的字符转换成大写字母(Upper)

剪切和粘贴文本

  • Ctrl - K 从当前光标位置剪切至行尾的文本
  • Ctrl - U 从当前光标位置剪切至行首的文本
  • Alt - D 从当前光标位置剪切至词尾的文本
  • Alt - Backspace 从当前光标位置剪切至词头的文本,如果光标在一个单词的开头,剪切前一个单词
  • Ctrl - Y 把剪切环中的文本粘贴到光标位置

其他操作

  • Ctrl - R 增量搜索(输入你要寻找的Linux命令行,输入的越多精准度越高)

其他提到的技巧类型命令

  • !! 重复执行最后一次执行的命令
  • !88 执行历史第88条命令
  • !string 执行最近历史列表中以这个字符串开头的命令
  • !?string 执行最近历史列表中,包含这个字符串的命令
  • script [file] 记录当前会话所输入的所有指令(从输入这个指令开始记录)

Operating System Linux 2021-02-25 18:27:24

Linux - 命令精进03

创建用户

  • adduser [user_name] # 该命令会创建用户/用户组/用户目录/初始化用户环境等一系列操作,是 创建一个可以登录系统的正常用户
  • useradd [user_name] # 该命令会创建用户/用户组,然后什么也不做,是 创建一个不可以登录系统的系统用户

设置密码

  • passwd [user_name]

修改用户名称(登录名称)

  • usermod –l [newusername] [oldusername]

删除用户

  • userdel [user_name] # 删除用户,如需删除用户信息如Home目录等需要使用 -r 参数

锁定/解锁用户

  • usermod -L [user_name] # 锁定用户,用户无法再正常登录
  • usermod -U [user_name] # 解锁用户,用户可以正常登录

查看用户信息

  • id [user_name]

用户组创建

  • groupadd –g [gid] [groupname] # 创建ID为[gid]的[groupname]用户组

添加用户到用户组

  • usermod -a -G [groupname] [username]
  • gpasswd -a [username] [groupname]

从用户组踢出用户

  • gpasswd -d [username] [groupname]

删除用户组

  • groupdel [group_name]

Operating System Linux 2021-02-07 17:36:22

Linux - SSH Config文件最简指南

SSH Config文件位于用户目录下的.ssh/config

按照规则配置好文件后,可以在Visual Studio Code以及终端中使用 ssh [host] 语法快速连接服务器

# 公司机器
Host company-ubuntu1804
    HostName 182.20.1.12
    User chancel
    Port 20392
    IdentityFile ~/.ssh/passphrase_id_rsa

Operating System Linux 2021-02-04 16:15:28

Linux - 命令精进02

防火墙常见配置(通常需要sudo执行,较新的发行版都采用了Firewalld防火墙)

另外需要注意当前的ZONE是否是public

# 查看当前默认的规则名称
firewall-cmd --get-zones
# 查看支持直接开放对应服务的端口列表
firewall-cmd --get-services
# 查看开放的服务列表
firewall-cmd --list-services
# 开放一个服务
firewall-cmd --add-service=http  --permanent
# 查看所有已经打开的端口(不包含指定打开的服务)
firewall-cmd --list-ports
# 查看/开放/删除一个端口
firewall-cmd --zone= public --query-port=80/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone= public --remove-port=80/tcp --permanent
# 应用所做更改
firewall-cmd --reload

Cent7的selinux的关闭

# 查看selinux状态
/usr/sbin/sestatus -v
# 临时关闭sexlinux,0关闭,1开启
setenforce 0
# 永久关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久性关闭

Curl模拟GET请求、模拟POST请求

# 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl "http://www.example.com" 

# 显示全部信息
curl -i "http://www.example.com"  

# 只显示头部信息
curl -l "http://www.example.com" 

# 显示get请求全过程解析
curl -v "http://www.example.com" 

# 模拟带Json数据的POST请求
curl -H "Content-Type:application/json" -X POST --data '{"index":"1503652289983"}' http://192.168.1.1/index

# 模拟表单提交
curl -d "param1=value1&param2=value2" http://www.example.com/index

# 模拟带Cookies提交
curl -v --cookie "xxxxxxxxxxxxxxxxxx" https://www.example.com

# 模拟文件提交
curl -F "myfile=@hellocurl.zip" "www.example.com/upload"

nmap 扫描服务器端口开放情况

# 普通扫描(需要三次握手,容易被判断为攻击)
nmap -p 1-200 [server_ip]

# 快速扫描(不需要三次握手,需要ROOT权限执行,)
nmap -sS -p 1-200 [server_ip]

# 注:
- sU:寻找目标主机打开的UDP端口
- sF:tcp的扫描一种,发送一个FIN标志的数据包

Operating System Linux 2021-02-04 15:43:38

Linux - 命令精进01

输出显示为一个表

  • mount | column -t

让显示结果排序

  • ps aux | sort -nk 4

切换到之前的目录

  • cd -

自动回答命令

  • y | apt install vim

创建指定大小的文件

  • dd if=/dev/zero of=out.txt bs=1M count=10

以Root用户运行最后的命令

  • sudo !!

批量下载文件

  • cat urls.txt | xargs wget

查看占用磁盘的文件

  • du -hsx * | sort -rh | head -6

获取一个文件的详细信息

  • stat README.md

复制命令输出到粘贴板

  • php -i | xsel -b

循环运行一个命令直到他成功

while true
do
ping -c 1 www.google.com > /dev/null 2>&1 && break
done;

Operating System Linux 2021-02-04 15:07:20

Debian - 休眠设置(无需调整swap分区)

如果在创建Debian操作系统的时候没有勾选需要休眠的话,那么swap分区大小一般为1G,远小于物理内存,休眠所需的swap空间通常略小于实际物理内存

为了确保休眠成功,一般会保证swap分区大小略大于实际物理内存,这个时候我们只需要创建swap分区文件即可

首先,创建一个swap分区文件,并添加开机挂载

sudo fallocate -l 32g /swapfile

sudo mkswap /swapfile

sudo echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

暂停操作系统使用交换区

sudo sysctl -w vm.swappiness=1 

创建内核变量文件

sudo echo 'vm.swappiness=1'/etc/sysctl.d/ local.conf 

启动操作系统使用交换区

sudo swapon /swapfile

安装uswsusp工具调整休眠,根据前面的操作回答uswsusp工具的问题

sudo apt install uswsusp

sudo dpkg-reconfigure -pmedium uswsusp

设置完成后,查看你的uswsusp.conf配置文件,这是我的配置文件输出,可以使用 swap-offset /swap 校验swapfile文件偏移量是否准确

cat /etc/uswsusp.conf

# /etc/uswsusp.conf(5) -- Configuration file for s2disk/s2both 
resume device = /dev/nvme0n1p2
compress = y
early writeout = y
image size = 2147483647
RSA key file = /etc/uswsusp.key
shutdown method = platform
resume offset = 274432
encrypt = y

运行 update-initramfs -u 使上述所有设置生效,最后使用以下指令可测试休眠是否成功

s2disk

参考资料

Operating System Linux 2021-01-24 22:39:39

Supervisor - 配置文件指南

Supervisord 是用 Python 开发的进程管理工具,非常常用于Linux系统,是用户级的Systemd,常见的配置文件如下

[program:myProgram]
directory=/opt/blog/myProgram
command=/usr/local/python3 main.py
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/supervisor/myProgram-stdout.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/supervisor/myProgram-stderr.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5
stderr_capture_maxbytes=1MB
user = chancel
environment = HOME="/home/chancel", USER="chancel"

注解

  • myProgram:程序名称
  • directory:程序运行的起始位置
  • autostart:自启动(在supervisor启动之后自启动)
  • environment:针对一些需要特殊变量环境的程序设置启动时的变量环境

Software Tools Linux 2021-01-20 15:35:06

SSH - 反向代理(SSH隧道)方法

假设有2台主机A和B,目标是实现A机器的8080端口转发到B机器的9090端口

首先编辑A主机的 /etc/ssh/sshd_config,将GatewayPorts注释(#符号)去掉,值修改为yes

sudo vim /etc/ssh/sshd_config

...
#GatewayPorts no
...

重启A主机的ssh服务并启动转发

sudo systemctl restart sshd
sudo ssh -NfR 8080:9090 [B机器用户名]@[B机器IP]

按上述操作后,则在任何外网机器访问A主机的8080端口,最终都会被转发到B主机的80端口上

此外可以参考针对SSH转发优化的 SSH TUNNELLING FOR FUN AND PROFIT: AUTOSSH

Network Linux 2021-01-18 14:23:13

1 of 3 | A total of 29