分类 - 系统与工具

2021-01-13 21:15:50    11    0    0

一. 使用心得

AutoHotkey 官网地址 https://www.autohotkey.com/,从官网可看到ahk可以干非常多的事情,可以让事情变得非常高效,官网给出的quickstart也非常简单,非常容易上手,我要分享的有两点:充分利用 Alt 键、常用APP一键切换,一键直达指定应用。

1.1 充分地利用 Alt 键

在Windows下的默认配置中,Alt 键的作用并不是那么大,在使用AutoHotkey之前,我用Alt键的地方主要有:

  • Ctrl + Alt + Delete 调出任务管理器。
  • Alt + F4 关闭窗口,也不是很好用,因为F4键太远了。
  • Alt + Tab 最近的两个窗口来回切换,这个可能是用的最多的了。

所以,Alt 并没有充分利用起来,然后Alt又占据了非常优秀键盘位置,离大拇指最近。所以你可以使用 AutoHotkey 把Alt键充分利用起来。

2021-01-12 20:16:55    24    0    0

一. dnsmasq安装

  1. # centos
  2. sudo yum -y install dnsmasq
  3. # ubuntu
  4. sudo apt-get -y install dnsmasq
  5. # 关掉默认的解析服务避免端口冲突
  6. sudo systemctl stop systemd-resolved.service
  7. sudo systemctl disable systemd-resolved.service
  8. # 启动服务
  9. sudo systemctl start dnsmasq
  10. sudo systemctl enable dnsmasq
  11. sudo systemctl status dnsmasq
  • dnsmasq的解析顺序如下:
    • 寻找 /etc/hosts 文件。
    • 寻找 dnsmasq 的缓存。
    • 寻找 dnsmasq 配置的上游dns服务器地址。
2021-01-11 20:43:07    21    0    0

场景再现

在脚本中需要并发执行多个命令,比如,需要同时登录到10台机器,并在10台机器是分别格式化磁盘。格式化磁盘是一个耗时的操作,如果顺序执行的话,会非常耗时。所以可以使用后台执行,使用wait命令等待所有的后台命令返回。

解决方法

当有多个任务时需要同时运行时,可按照如下格式编写。

  1. #!/bin/bash
  2. func1(){
  3. sleep 3
  4. echo "$(date) func1" | tee /tmp/func1
  5. }
2021-01-11 20:42:11    10    0    0

在某些场景需要实时读取文件的新增内容,使用linux的命令行tail不是很容易操作,所有有了python版本的tail,方便直接加入到脚本。

一. 源码内容

  • tail.py
  1. import os
  2. import sys
  3. import time
  4. class Tail:
  5. def __init__(self, tailed_file, interval_seconds=1.0, start_position="end"):
  6. self.tailed_file = os.path.abspath(tailed_file)
  7. self.check_file_validity()
  8. self.callback = sys.stdout.write
  9. if start_position not in ("start", "end"):
  10. raise Exception("start_position must be: start or end")
  11. self.start_position = start_position
  12. self.interval_seconds = interval_seconds
2020-12-28 13:38:16    10    0    0

ssh远程登录或者使用ssh协议的命令(比如scp)慢时,可以按照如下步骤检查

一. UseDNS

关闭 服务端 的sshd服务DNS解析配置,在服务端:

  1. sudo vim /etc/ssh/sshd_config
  2. # 修改
  3. UseDNS no
  4. sudo systemctl restart sshd
2020-12-17 00:18:16    12    0    0

时间 => 时间戳

  1. # 当前时间 => 时间戳
  2. date +%s
  3. # 指定时间 => 时间戳
  4. date +%s -d '2020-05-18 12:00:00'
2020-12-16 22:36:36    9    0    0

一. 安装配置

  1. # 安装工具jenv
  2. brew install jenv
  3. # 添加环境变量
  4. sudo vim /etc/profile
  5. export PATH="$HOME/.jenv/bin:$PATH"
  6. eval "$(jenv init -)"
  7. source /etc/profile
  8. jenv enable-plugin export
  9. # 查看当前的java版本与JAVA_HOME
  10. /usr/libexec/java_home
  11. /usr/libexec/java_home -V
2020-11-21 18:28:22    22    0    0

场景再现

在多数集群中,节点的配置必须保持一致,一旦管理节点修改了配置,就需要把配置同步到其他节点,通常情况下是下面这样的,它的缺点是每次都需要写全路径。

  1. scp -r /path/conf node1:/path/conf
  2. scp -r /path/conf node2:/path/conf
  3. scp -r /path/conf node3:/path/conf

解决方法

使用 rsync 命令同步,同时自动获取到文件的绝对路径,脚本如下

  • 同步配置文件 sudo vim /usr/bin/xsync
    sudo chmod +x /usr/bin/xsync
2020-11-21 09:32:55    16    0    0

一. RPM

1.1 安装方式

  1. # 本地文件安装
  2. rpm -ivh /path/yyy.rpm
  3. # 远程下载安装
  4. rpm -ivh ftp://ftp.xxx.com/yyy.rpm
  5. rpm -ivh http://www.xxx.com/yyy.rpm

1.2 安装步骤

rpm包安装一般会是如下步骤

  • 1、软件包依赖性检测。
  • 2、检查软件包冲突检测。
  • 3、执行安装前的脚本。
  • 4、处理配置文件(不会将原来的配置文件覆盖掉,会给源文件加上后缀.rpmorig)。
  • 5、复制程序的文件到相应目录,同时设置文件权限。
  • 6、执行安装后脚本程序。
  • 7、更新RPM数据库,更新校验和卸载等。

1.3 选项总结

2020-11-04 09:14:52    117    0    0

letsencrypt 的使用场景通常是有外网的时候,如果安装的nginx不能访问外网,同时也不能被外网访问,只能在内网发布,这时候letsencrypt就无法安装了,使用openssl手动生成证书可以解决此问题。

  • 安装nginx
  1. # 安装nginx
  2. apt install nginx
  3. vim /etc/nginx/conf.d/test.conf
  4. server {
  5. listen 80;
  6. server_name www.test.com;
  7. root /var/www/html;