Linux

分类下相关文章

Makefile 中导入 .env 配置

例如我想在 Makefile 中定义 mysqldump, 然后读取 .env 中的参数配置。 .env 文件 DB_DATABASE=somedb DB_USERNAME=someuser DB_PASSWORD=password Makefile 直接 include 就可以 include .env .PHONY: mysqldump mysqldump: mysqldump -u$(DB_USERNAME) -p$(DB_PASSWORD) $(DB_DATABASE) > database/sql/data.sql make 执行 > make mysqldu ...

阅读全文...

线上服务器配置 systemd

目标 降低操作成本。能快速线上部署,更新代码 将线上一套没有配置 systemd 的服务,加上 systemd 配置 形成配置模板。避免每次都忘记具体命令,再就是代码更新,线上重启服务,形成脚本,节省时间 模板 systemd 配置形成 vim snippet。实际上是两个,一个是 systemd 的,一个是 makefile 的。 配置文件放到项目根目录的 config 目录下。集中存放 systemd,nginx 配置文件等 相关操作命令放到 Makefile 中。例如,systemctl enable start stop 等,scp 配置文件等。 TODO [X] vim s ...

阅读全文...

tmuxp 通过文件名加载配置,省略路径

通过文件路径加载 tmuxp 配置文件,太麻烦。 tmuxp load ~/work/config/tmuxp/daily.yml 我希望能达到 tmuxinator 那种后面直接输入名字就可以加载的效果。 查了一下,tmuxp 还真的支持这个功能: https://tmuxp.git-pull.com/cli.html#load-session # name of the config, assume $HOME/.tmuxp/myconfig.yaml tmuxp load myconfig 即把所有配置文件都放到 ~/.tmuxp 目录下即可。 创建软链接 这样我只需要把 .tm ...

阅读全文...

安装 tmuxp 替代 tmuxinator

为何要抛弃 tmuxinator tmuxinator 升级需要升级 ruby 升级 ruby 需要安装 rvm 安装 rvm 又需要更新 gpg 然而 gpg 更新永远连不上服务器 我对 ruby 升级的麻烦程度感到了无比的厌恶,而我电脑上唯一需要用到 ruby 的地方就是这个 tmuxinator。 $ sudo gem install tmuxinator Fetching: thor-1.2.1.gem (100%) Successfully installed thor-1.2.1 Fetching: xdg-2.2.5.gem (100%) Development of thi ...

阅读全文...

提升 Tmux 状态栏颜值

看了一段日本小哥的写代码视频,发现里面的 terminal 配置非常漂亮。 既然每天都要在 tmux 中工作,把界面美化一下还是有必要的,至少心情是愉悦的。 最终效果: 是时候更新一下配置了 现有的 .tmux.conf 文件是 10 年前配置的,之后就没怎么更新过了。 只有偶尔几次升级版本导致配置不兼容,才被动调整了几次。当前效果: .tmux 找到一个 star 16K 的 tmux 配置: https://github.com/gpakosz/.tmux 跟日本小哥的效果非常相似。 查看当前 tmux 版本 上面的 .tmux 配置有最低版本要求 tmux >= 2.3 (s ...

阅读全文...

Ubuntu Apt 在不安装三方包的情况下,查看版本号

例如,我想看看 Ubuntu Apt 中的 influxdb 版本是否是最新的 2.0 版本。 但是,我又不想先 apt install,仅仅想看看版本号。 可以使用 apt show: > apt show influxdb Package: influxdb Version: 1.6.4-1build1 Built-Using: golang-1.10 (= 1.10.4-2ubuntu1) ... ...

阅读全文...

WSL 1 升级 WSL 2 之后,Ubuntu 无法解析域名问题

将 WSL 1 升级到 WSL 2 之后,一直无法解析域名,例如 ssh 域名,报错: Could not resolve hostname 查看 resolv.conf 文件 ls -la /etc/resolv.conf /etc/resolv.conf -> ../run/resolvconf/resolv.conf 而 /run/resolvconf/resolv.conf 文件根本无法编辑。 解决方法 参考: https://github.com/microsoft/WSL/issues/5420 sudo rm /etc/resolv.conf sudo bash -c ...

阅读全文...

systemd 保存 golang 服务日志到指定文件

需求场景 我想将 golang 打印的日志保持到指定日志文件,方便需要的时候进行查看。例如: log.Println("some log") 而默认用 systemd 管理该服务的时候,是看不到日志输出的。 systemd 应用日志配置 每次重启都重置日志文件为空,重新写入: StandardOutput=file:/var/my.log StandardError=file:/var/my.log 保留所有日志历史,每次都 append: StandardOutput=append:/var/my.log StandardError=append:/var/my_er ...

阅读全文...

linux 用户组权限

以一个实际案例来体验一下 linux 用户组的权限查看及配置。 需求场景 测试环境:ubuntu 20.04。 我在服务器上新建的用户,希望能够不用 sudo 就可以查看 nginx 的 access.log 日志文件。 无法直接查看 access.log 的原因 $ ls -lah -rw-r----- 1 www-data adm 1.3M Nov 23 08:24 access.log 看第一个字段的其他用户权限,为 000。即连读取的权限都没有。 最简单的解决方案 把新用户加入 adm 用户组。 首先查看 adm 用户组有哪些用户: $ sudo groupmems -g a ...

阅读全文...

Ubuntu 20.04 禁止 root 用户远程 ssh 登录服务器

为了防止被暴力破解服务器 root 密码,我决定禁止 root 用户远程登录。 禁用方法 修改 sshd 服务的配置文件: /etc/ssh/sshd_config 搜索 PermitRootLogin,由 yes 改成 no: PermitRootLogin no 修改完毕之后,重启 sshd 服务: sudo service ssh restart 测试 使用 root ssh 登录服务器,填写密码之后,会提示错误: Permission denied, please try again. 效果达到了。 注意 不要写错了,因为同目录下存在一个 /etc/ssh/ssh_confi ...

阅读全文...

ubuntu 20.04 添加新用户,并赋予 sudo 权限

避免所有操作和部署都使用 root 用户,以免被利用漏洞被入侵系统。 所以在新购的 Ubuntu 20.04 服务器上,部署服务之前,我需要先新建一个用户, 并赋予 sudo 权限。 然后禁用 root 用户远程登录服务器。 使用 root 登录服务器 ssh root@YOUR_SERVER_IP adduser adduser YOUR_USER_NAME 例如新建一个名为 elephant 的账号,按照提示依次填写信息即可。 # adduser elephant Adding user `elephant' ... Adding new group `elephant' (1000 ...

阅读全文...

linux top 命令按照内存使用率排序

默认 top 命令是按照 CPU 使用率排序的。 但是,某些进程启动后,并不活跃,就很难看到该进程的表现。例如,启动一个 golang gin 的 web 服务进程,在没有访客请求的情况下,虽然其内存占用有 18M,但其 CPU 使用率为 0,所以,永远排在 top 进程列表的后面,甚至看不到。 这时,我就想看看内存占用排名靠前的进程,可以按下大写 M,即 shift + M,就可以了。 切换回 CPU 排序,只需要按下大写 P。 ...

阅读全文...

Linux 下查看用户所属的用户组

查看当前用户 > groups zhongwei adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev 查看指定用户 > groups root root : root > groups zhongwei zhongwei : zhongwei adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev ...

阅读全文...

清理 history 命令的历史记录

history 命令的历史实际上是存储在 ~/.bash_history 文件里,查看一下 less ~/.bash_history 就会发现,里面存储了所有的命令记录。 所以,清除的方法自然是删除该文件即可。 rm ~/.bash_history Mac 系统 但是如果是使用的 Mac 下的终端,其默认的是 zshell,所以还需要删除另一个文件 rm ~/.zsh_history 重新打开终端,执行 history 就会发现命令已清除。 ...

阅读全文...

CentOS 中文乱码

打开配置文件 /etc/sysconfig/i18n 添加两行 LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 使配置生效 source /etc/sysconfig/i18n 但是,有个问题,每次登陆都需要重新执行一遍 source,有没有永久解决的方法? 在服务器登录用户的 ~/.bashrc 文件最后加上此命令即可。 ...

阅读全文...