Linux

分类下相关文章

使用 ncdu 命令分析 linux 磁盘空间占用

对于需要长期运转的云服务器,磁盘空间占用是必须关注的。 毕竟 linux 服务器上很多运行的服务,都不是自己写的。在数据量大,访问量大的情况下,会产生大量的日志文件,缓存文件,甚至电商系统还会产生大量的缩略图图片文件。如果不关注磁盘空间的变化,很容易出现空间紧张的情况。 所以,需要一个能在远程服务器上,方便通过命令行查看磁盘空间分析结果的工具。 ncdu https://dev.yorhel.nl/ncdu Ncdu is a disk usage analyzer with a text-mode user interface. ubuntu 上安装 sudo apt install n ...

阅读全文...

sudoers, 非 root 用户远程免密码执行需要 sudo 权限的命令

需求背景 由于平时要频繁发布 golang 的程序到线上生产服务器,我通过 Makefile 自动执行编译,scp 可执行文件到服务器。但是无法自动远程执行 systemctl 的 restart 命令,因为 systemd 相关的命令需要 sudo 权限。 所以,最后一步总是需要登录到服务器上,然后手动执行 sudo systemctl restart xxx.service,然后输入密码,非常的浪费时间。 我想找个方案,能给当前用户增加 sudo 权限,同时为了安全起见,又能限制住只可以执行部分指定命令时有此权限。 解决方案 sudoers 发现 sudoers 完美满足需求。查看 sud ...

阅读全文...

linux 查看内存占用排名前十的进程

服务器上内存紧张,连交换分区都被用去大半。于是想看看具体是哪些进程占用的内存, 这里通过命令列出内存占用排名前十的进程列表。 shell 命令: ps -eo pid,ppid,cmd,%mem,rsz --sort=-rsz | head -n 11 输出: PID PPID CMD %MEM RSZ 1171 1 /usr/share/elasticsearch/jd 41.0 13467256 141801 141776 /usr/sbin/varnishd -a :6081 13.1 431019 ...

阅读全文...

Ubuntu Sever 22.04 ssh 登录报错:Permission denied (publickey)

在一台新建的 Ubuntu Sever 22.04 上,创建了一个新用户。参考: ubuntu 添加新用户,并赋予 sudo 权限 但是,通过 ssh 登录时,报错: Permission denied (publickey) 解决方法 打开配置文件 /etc/ssh/sshd_config 确保以下配置是 yes, 而不是 no。 PasswordAuthentication yes 即允许密码认证。 然后,reload sshd 服务,使修改生效: sudo systemctl reload sshd ...

阅读全文...

s3fs-fuse 将 Linode Object Storage 挂载到 Ubuntu Server 本地文件系统

s3fs 是什么 s3fs 是一个将 Amazon S3 存储桶挂载到本地文件系统的工具,它允许用户通过标准的文件系统接口访问 S3 存储桶中的数据,从而简化了与 S3 的交互过程。 s3fs 通过 FUSE(Filesystem in Userspace)将 S3 存储桶映射为本地文件系统,使得用户可以使用标准的文件系统 API 来与 S3 中的数据进行交互,而无需直接调用 S3 API。 https://github.com/s3fs-fuse/s3fs-fuse s3fs allows Linux, macOS, and FreeBSD to mount an S3 bucket vi ...

阅读全文...

Linode 服务器 IP 被墙,通过 ssh jump host 参数一键直连

问题现象 新购的 Linode 海外服务器,发现无法通过 ssh 登录。显示错误: ssh: connect to host x.x.x.x port 22: Resource temporarily unavailable 而通过另外一台可以登录的 DigitalOcean 的海外服务器,在那台服务器上是可以通过 ssh 登录上去的。 看来是这台 Linode 服务器的 IP 之前被人建站用过,IP 已经被国内的密码机构墙了。 这就很蛋疼了,总不能每次都通过另一台服务器上进行操作吧,主要是网络也不太好,在上面敲命令也很卡。 我想是否可以通过什么工具或者命令,可以直接在本地 ssh 上那台 ...

阅读全文...

国产开源操作系统 open 麒麟安装体验

最近看到好多国产操作系统替代的消息,公司这边也遇到了客户要求用 open 麒麟系统开发上位机的需求, 禁止使用 Windows 系统。加之 Open 鸿蒙 PC 系统的新闻也渐渐有风声了。看来国产系统替代是绕不过了。 收到领导任务,正好安装测试一下 openKylin 系统。 效果图 安装文档 直接参考官方文档: https://docs.openkylin.top/zh/%E7%A4%BE%E5%8C%BA%E5%8F%82%E4%B8%8E%E6%8C%87%E5%8D%97/openKylin%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85%E6%8C%87%E ...

阅读全文...

通过 Makefile 及 ssh 远程执行命令,实现服务器线上服务的自动部署

最近一直写接口文档,基于 swaggo 实现的文档服务。由于要跟前端配合,所以每天都要频繁更新接口文档,非常麻烦。之前是半自动化状态: makefile 中 scp 文档程序到服务器 手动登录服务器,再 makefile 执行 systemd reload 文档服务 (文档服务基于 golang gin 所以需要重启服务) 最近在看一个开源项目的 Makefile 时,发现可以使用 ssh 远程执行命令,这样就不需要手动登录服务器来操作了,甚好。 Makefile 代码 .PHONY: doc doc: swag init --output api_docs --tags "微 ...

阅读全文...

systemd timer 与 crontab 的对比

在排查 certbot 不自动更新证书问题时,第一次知道 systemd timer 也能做为系统定时任务的管理工具。但是他与之前熟知的 crontab 有什么区别呢? 列举一下 systemd timer 的优势 支持微妙、毫秒、秒级的定时任务;而 crontab 只能支持到分钟级 上次任务没有执行完时,不会重复执行定时任务;而 crontab 需要手动处理单例问题 支持只执行一次的定时点的计划任务 方便的指定运行用户。 两个配置文件 每一个“.timer”文件必须有一个对应的“.service”文件存在,这样计时器才有意义。默认情况下,如果Timer和Service的文件名(不包含扩展 ...

阅读全文...

ulimit 查看 Maximum number of open file descriptors

ulimit 的作用 网上大部分介绍是说,ulimit 显示的是当前用户的资源限制。 “ulimit” is an interesting Linux shell command that can set or report the resource limit of the current user. 而 man ulimit 的描述是,shell 的资源限制。 ulimit builtin sets or outputs the resource usage limits of the shell and any processes spawned by it. ulimit ...

阅读全文...

ubuntu 上升级 tmux 到最新版本

我发现家里电脑旧版本的 tmux 与 NeoVim 的 ale 插件有兼容性问题,在提示语法错误时,会导致 vim 显示混乱。而退出 tmux 或者在公司电脑上用最新的 tmux 就不会出现这种显示问题。 用 apt install 的方式并不能获取到最新的 tmux 版本。 所以只能从 github 上下载最新的代码,手动编译安装。 升级方法 sudo apt install libevent-dev ncurses-dev build-essential bison pkg-config wget https://github.com/tmux/tmux/releases/download ...

阅读全文...

smug 一款用 go 实现的 tmux session manager

之前由 tmuxinator 叛变到了 tmuxp, 但是不想 tmuxp 的打开速度奇慢无比,一个 8 个 window 的配置文件, 打开需要 5 秒以上,慢的不可思议。 于是今天借新建项目的机会,我又尝试了一个用 golang 实现的 tmux session 管理工具 - smug smug 的中文意思是: adj. 自鸣得意的;自以为是的;整洁的 n. 书呆子;自命不凡的家伙 我觉得可能是 session manager using go 的缩写吧,这样容易记忆。 smug 的优势 启动速度相比 tmuxp 这个渣渣快 N 倍,几乎秒开 配置相对 tmuxp 简洁太多 规避了对 ...

阅读全文...

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 ...

阅读全文...