Linux 维护
1、SSH 登录时间限制,针对不同的 SSH 账号,启用远程登录时间控制
# 1、sshd 启用基于 pam 的时间访问控制
# 在配置文件 /etc/pam.d/sshd 中添加如下配置, 并重启 sshd 服务 systemctl restart sshd 使其配置生效
account required pam_time.so
# 日期表示
Mo(周一)、Tu(周二)、We(周三)、Th(周四)、Fr(周五)、Sa(周六)、Su(周七)、Wk(周末)、Wd(工作日)、Al(所有日期)
# 2、使用示列;默认配置文件 /etc/security/time.conf
# 允许用户 user01 在工作日上午九点至下午六点通过 ssh 访问服务器
sshd;*;user01;Wd0900-1800
# 允许用户 user02 在周末上午九点至下午六点通过 ssh 访问服务器
sshd;*;user02;Wk0900-1800
# 静止用户 user03 在任何日期的晚上十点至零点通过 ssh 访问服务器
sshd;*;user03;!Al2200-0000
# 仅允许用户 user04 在周一至周五的早上六点 ~ 晚上十点间进行 ssh 登录
sshd;*;user04;MoTuWe0600-2200
2、如何统计知名开源项目,如 MySQL、Redis、Linux Kernel 、 Kubernetes 的源代码行数
# 项目仓库地址
[cloc](https://github.com/AlDanial/cloc)
[scc](https://github.com/boyter/scc)
# 安装
apt/snap install cloc/scc
# 在待统计项目根目录执行,time 统计命令 cloc 执行了多长时间。推荐使用 cloc 方式
time cloc .
time scc .
3、通过内存虚拟出硬盘
实现原理:通过软件技术,将一部分物理内存通过虚拟技术转变为硬盘以较大幅度提升磁盘数据读取速度
适用场景:作为临时文件目录,可提高读写速度,同时避免物理磁盘频繁读写,造成磁盘使用寿命降低
# windows 端使用开源工具 ImDisk
[ImDiskTk-x64 下载地址](https://sourceforge.net/projects/imdisk-toolkit/files/20220826/ImDiskTk-x64.zip)
# linux 端使用如下命令即可
mkdir /mnt/vdisk
mount -t tmpfs -o size=2G tmpfs /mnt/vdisk/
4、通过 /etc/rc.d/rc.local 实现开机启动不生效的原因分析与排障思路
# 1、为该文件添加可执行权限
chmod +x /etc/rc.d/rc.local
# 2、确保服务 rc-local 处于开机启动状态
systemctl enable rc-local && systemctl start rc-local
# 3、检查 rc.local 中添加的脚本语法、脚本执行时是否报错
若服务 rc-local 在开机时无法正常启动 ?? 可通过命令` journalctl -u rc-local `查看具体原因
通常是` /etc/rc.d/rc.local `中添加的脚本语法有误或脚本执行时报错,如 通过自定义 iptables chain 来添加规则时,脚本执行时会报该 chain not found !!
5、vim 打开文件后,中文显示乱码,解决方案是在用户主目录创建文件 ~/.vimrc , 添加如下内容
set termencoding=utf-8
set encoding=utf8
set fileencodings=utf8,ucs-bom,gbk,cp936,gb2312,gb18030
6、固态硬盘参数 TBW ,指 SSD 在其寿命内能够写入的总字节数,那我们购买新的或二手的固态盘时如何验证该参数实际值呢 ??
# 安装硬盘参数 TBW 检测工具
yum/apt install smartmontools
smartctl -A /dev/sde
> 241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 18657690420
# Total_LBAs_Written 代表磁盘自出厂总写入数据量,单位 LBAS = 512Byte(0.5KB)。此处代表已有 9TB 数据写入
7、通过进程的暂停与恢复,实现 CPU 资源的管理
stress-ng -c 3 # 启动三个进程,每进程 CPU 使用 100%
kill -STOP 8728 # 暂停进程, 释放 CPU 资源
kill -CONT 8728 # 恢复进程,重新获取 CPU 资源
8、快速获取主机外网 ip (srt nat 转换后的 IP 地址)
# 备用查询地址 ifconfig.me
curl -4 ifconfig.co
#> 39.103.168.25
curl -6 ifconfig.co
#> 2408:4001:249:3500:deb6:cafa:75b3:11be
9、Ubuntu 系统中,执行命令 dpkg -l |grep nginx
输出如下, 第一列 rc 表示什么
rc libnginx-mod-http-image-filter 1.18.0-0ubuntu1.3 amd64 HTTP image filter module for Nginx
rc libnginx-mod-http-xslt-filter 1.18.0-0ubuntu1.3 amd64 XSLT Transformation module for Nginx
rc libnginx-mod-mail 1.18.0-0ubuntu1.3 amd64 Mail module for Nginx
rc libnginx-mod-stream 1.18.0-0ubuntu1.3 amd64 Stream module for Nginx
rc nginx-common 1.18.0-0ubuntu1.3 all small, powerful, scalable web/proxy server - common files
R:表示软件包已被卸载(Removed),C:表示软件包的配置文件仍然存在。想要完全删除这些软件包,可以运行以下命令
sudo apt-get purge libnginx-mod-http-image-filter libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx-common
10、Rocky Linux 9/AlmaLinux 9 手动配置静态 IP 地址
# 编辑 /etc/NetworkManager/system-connections/ens3.nmconnection 添加如下配置项
...
[ipv4]
method=manual
address1=192.168.31.93/24,192.168.31.1
dns=223.5.5.5
...
# 使配置生效
nmcli connection reload ens3.nmconnection
# 查看接口信息
nmcli device show
11、禁用 NetworkManager 通过 dhclient 获取的 dns server 配置本机 DNS
# 1、添加如下配置 cat /etc/NetworkManager/NetworkManager.conf
[main]
dns = none
# 2、从 cat /etc/resolv.conf 删除自动生成的 nameserver 设置
# 3、cat /etc/sysconfig/network-scripts/ifcfg-eth0 手动配置 dns server
DNS1=223.5.5.5
DNS2=8.8.8.8
# 4、systemctl restart NetworkManager
12、使用 cat 命令查看文件时出现乱码,解决方案如下
# cat ~/.bashrc
export LANG=en_US.UTF-8
# 添加该配置后退出当前 shell 重新进入即可生效
*码字不易,若觉得本文对你有用,欢迎点赞 👍、分享 🚀 ,相关技术热点时时看🔥🔥🔥…*
Git 配置
1、Git 设置代理
# 如果您使用 HTTP 或 HTTPS 协议连接到 Git 仓库
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
# 如果您使用 SOCKS5 协议连接到 Git 仓库
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
# 如果您想查看当前代理设置
git config --global --get http.proxy
git config --global --get https.proxy
# 如果您想要取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
2、Git 配置文件优先级顺序
--local
# 作用范围是当前 Git 仓库,配置项将保存在当前 Git 仓库的 .git/config 文件中,配置项仅对当前仓库有效
--global
# 设置全局范围的 Git 配置,配置项将保存在你的用户主目录下的 .gitconfig 文件中(~/.gitconfig),配置项对当前系统用户操作的任意 Git 仓库有效
--system
# 设置系统范围的 Git 配置,配置项将保存在系统范围的 Git 配置文件中,通常位于 /etc/gitconfig,配置项对任意系统用户和任意 Git 仓库都有效
3、Git 凭据的三种模式
可通过配置项 credential.helper 指定使用哪个方式来存储和获取凭据
1》store 模式:
将凭据用明文的形式存放在磁盘中(默认位于用户主目录 ~/.git-credentials),并且永不过期
2》cache 模式:
将凭据存储在内存中一段时间(默认 15 分钟后从内存中清除),以便自动提供凭证
3》manager 模式:
将凭据缓存到你系统用户的凭据管理器中,该方式将凭据加密后存放在磁盘中,并且永不过期
配置命令:
git config credential.helper {store | cache | manager}
cache 模式下配置超时配置
git config --global credential.cacheOptions "--timeout 300"
基于 ssh 公钥的 github 认证服务
# 1、本地使用 ssh-keygen 生成公钥 cat ~/.ssh/id_rsa.pub
# 2、登录 GitHub 账号,进入 Settings > SSH and GPG keys,点击 New SSH key,将复制的公钥粘贴到 Key 字段,并添加标题,点击 Add SSH key保存配置
# 3、本地 GitHub 仓库更改远程(origin)仓库 url 为 ssh 格式 !!
git remote -v
#> origin https://github.com/demo/test.git (fetch)
#> origin https://github.com/demo/test.git (push)
git remote set-url origin git@github.com:demo/test.git
*码字不易,若觉得本文对你有用,欢迎点赞 👍、分享 🚀 ,相关技术热点时时看🔥🔥🔥…*