Tips on Linux
1. 复制一份备份文件
cp /etc/sysconfig/iptables{,.back}
2. 重命名
mv /etc/sysconfig/iptables{,.back}
3. 追加内容到文件尾
echo "123" >> /path/file
4. 树形查看目录大小
du -h --max-depth=1
5. 指定源搜索软件
yum repo-pkgs REPO list
yum repo-pkgs epel list | grep nginx
ANOTHER WAY TO
yum --disablerepo "*" --enablerepo REPO list
yum --disablerepo "*" --enablerepo REPO list | grep nginx
6. MySQL 5.7.37
password
—> authentication_string
7. 挂载磁盘设备
fdisk /dev/vdb1
{n, p, size, type, w}
mkfs.ext4 /dev/vdb1
mount /dev/vdb1 /data
8. 使用代理
curl -–socks5 127.0.0.1:10808 https://www.google.com
wget -e http_proxy=127.0.0.1:10808 http://www/google.com
wget -e https_proxy=127.0.0.1:10808 https://www/google.com
8.1 测试是否使用代理
curl cip.cc
8.2 设置临时代理
export http_proxy="http://username:password@proxyServer:port/" |
8.3 取消代理
unset http_proxy |
8.4 永久代理
cat >> /etc/profile << EOF |
source /etc/profile
9. 清空正在使用的文件
/usr/bin/cp /dev/null /path2yourFILE
> /path2yourFILE
cp使用绝对路径, 避免出现cp提示是否覆盖文件
对正在使用的文件,如果直接rm -rf 文件是没了, 但是占用的空间还在.
10. 图形化配置网络ip
nmtui
nmtui 是 NetworkManager 工具的一部分,它为你提供了一个漂亮的用户界面来配置网络。这是 NetworkManager-tui 包的一部分,当你完成最小服务器的安装时它应该默认安装。
11. 删除某个目录下除了某个文件之外
rm -rf /pathtoyourdir/(!xx.txt)
12. 不重启系统识别新添加的硬盘
for i in 0 1 2; do echo "- - -" > /sys/class/scsi_host/host$i/scan; done
13. 删除乱码文件
ls -i
find -inum xxxx -delete
14. 查找已删除但正在使用的文件
lsof +L1
lsof | grep deleted
+L
启用文件链接计数-L
关闭文件链接计数+L1
列出已打开但是被取消链接的文件 (一般指deleted)
15. Windows切换samba用户
- 查看当前链接
net use
- 删除链接
net use * /del
16. 判断口段是否开放
nc -zv <ip> <port>
17. 99-sysctl.conf
99-sysctl.conf 是一个在 /etc/sysctl.d/ 目录中的文件,它是用来配置系统内核参数的。文件名中的数字 99 表示它的优先级较高,因为数字越大,优先级越高。在应用 sysctl 设置时,系统会按照文件名的字典序来顺序加载这些文件,较高优先级的文件会覆盖较低优先级的文件中相同参数的设置。
在 99-sysctl.conf 文件中,您可以指定各种系统内核参数的设置,比如网络参数、内存参数等。这些参数的设置可以影响系统的性能、安全性和行为
18. I/O读写情况
pidstat -d | sort -k 5 -n -r | head -n 10 |
19. 查看 MySQL 各个数据库的大小
查看所有数据库大小
SELECT table_schema AS `Database`,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM information_schema.tables
GROUP BY table_schema;查看某个数据库的所有表
SELECT
table_name AS `表名`,
ROUND((data_length + index_length) / 1024 / 1048576, 2) AS `表大小(GB)`
FROM
information_schema.tables
WHERE
table_schema = 'your_dbname'
ORDER BY
(data_length + index_length) DESC;
20. MySQL一些初始测试
CREATE database IF NOT EXISTS rand_db character SET utf8 collate utf8_general_ci; |
21. pve 去除订阅弹窗
编辑文件 /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
Ext.Msg.show
–> Ext.Msg.noshow
22. firewalld public不生效
public区域没有指定接口的时候, 相关public的设置不一定生效
firewall-cmd --zone=public --add-interface=eth0 --permanent
23. Linux 终端快捷键
快捷键 | 功能 |
---|---|
Ctrl + A |
切换光标至行首 |
Ctrl + E |
切换光标至行尾 |
Ctrl + U |
删除光标至行首 |
Ctrl + K |
删除光标至行尾 |
Ctrl + W |
删除光标前一个词 |
Ctrl + L |
清屏 |
Ctrl + C |
停止正在执行的进程或命令 |
Ctrl + D |
注销或退出终端 |
Ctrl + Z |
暂停正在执行的进程(fg 恢复) |
Ctrl + R |
在命令历史中进行逆向搜索 |
!! |
重复执行上一条命令 |
!n |
重复执行命令历史中的第 n 条命令 |
24. yum 撤回安装操作
某些情况下,为了安装某些软件需要安装大量依赖,比如下面
yum install cmake3 glib2-devel libpcap libpcap-devel libgcrypt-devel glib2-devel qt-devel qt5-qtbase-devel qt5-linguist qt5-qtmultimedia-devel qt5-qtsvg-devel libcap-devel libcap-ng-devel gnutls-devel krb5-devel libxml2-devel lua-devel lz4-devel snappy-devel spandsp-devel libssh2-devel bcg729-devel libmaxminddb-devel sbc-devel libsmi-devel libnl3-devel libnghttp2-devel libssh-devel libpcap-devel c-ares-devel redhat-rpm-config rpm-build gtk+-devel gtk3-devel desktop-file-utils portaudio-devel rubygem-asciidoctor docbook5-style-xsl docbook-style-xsl systemd-devel python34 cmake3 git gcc gcc-c++ flex bison doxygen gettext-devel libxslt cmake |
某些包已经存在, 会直接跳过安装, 安装依赖后发现软件还是无法安装, 这个时候我们打算撤回依赖安装
此时yum remove的话,会删除关键依赖
yum remove cmake3 glib2-devel libpcap libpcap-devel libgcrypt-devel glib2-devel qt-devel qt5-qtbase-devel qt5-linguist qt5-qtmultimedia-devel qt5-qtsvg-devel libcap-devel libcap-ng-devel gnutls-devel krb5-devel libxml2-devel lua-devel lz4-devel snappy-devel spandsp-devel libssh2-devel bcg729-devel libmaxminddb-devel sbc-devel libsmi-devel libnl3-devel libnghttp2-devel libssh-devel libpcap-devel c-ares-devel redhat-rpm-config rpm-build gtk+-devel gtk3-devel desktop-file-utils portaudio-devel rubygem-asciidoctor docbook5-style-xsl docbook-style-xsl systemd-devel python34 cmake3 git gcc gcc-c++ flex bison doxygen gettext-devel libxslt cmake |
正确做法:
yum history查看yum操作记录
[root@pve-centos7 ~]# yum history |
撤回刚才的操作直接 yum history undo 168
即可
25. vim 常见快捷键
快捷键 | 功能 |
---|---|
x |
向右删除光标所在的文本 |
X(大写) |
向左删除光标所在的文本 |
y |
复制选中的文本 |
i |
在当前光标位置前插入 |
I |
在当前行首插入 |
a |
在当前光标位置后插入 |
A(大写) |
在当前行尾插入 |
0 |
切换至行首 |
26. 端口检测
某些情况下系统可能没有安装 telnet
,nc
, nmap
等端口检测工具, 可以利用一下常见的命令变相检测端口的连通性.
ssh -v $IP -p $PORT
参数解释:-v
标识详细模式-p
指定端口
输出内容中看到 Connection established
表示该端口是开放的
echo >/dev/tcp/$IP/$PORT
27. 容器检测nginx进程
检测所有容器是否包含某个进程,并返回该容器的容器名
|
28. 基于TCP的时间同步
基于 TCP端口37的时间同步
服务端:
yum install xinetd
配置文件:
vim /etc/xinetd.d/time-stream
disable = yes
—> disable = no
客户端:
yum install rdate
rdate -s server_ip
29. 查看非空行和非注释行
grep -E '^\s*[^#]' example.txt
egrep -v "^$|^#" example.txt
30. docker镜像便捷传输
docker save mysql:5.7.44 | gzip | ssh [email protected] 'gunzip | docker load'
31. docker 配置代理
docker 不支持socks代理,请使用http代理
more /etc/systemd/system/docker.service.d/http-proxy.conf |
Environment="HTTP_PROXY=socks://127.0.0.1:10809"
Environment="HTTPS_PROXY=socks://127.0.0.1:10809/"
32. 下载rpm包
rpm -aq | grep boost | xargs yumdownloader --destdir=./
--destdir=./
: 指定下载路径- -resolve
: 下载依赖
33. Linux 终端命令提示符
设置颜色 |
34. git 代理
- http/https代理
git config --global http.https://github.com.proxy socks5://127.0.0.1:10808
- ssh 代理
vim ~/.ssh/config
Host github.com
Hostname ssh.github.com
Port 443
User git
ProxyCommand nc -v -x 127.0.0.1:10808 %h %p
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
35. 任务后台运行
yum install screen -y
启动新会话
screen -S $SESSION_NAME
将会话放入后台
Ctrl + A, D
查看后台运行的会话
screen -ls
重新连接会话
screen -r $SESSION_NAME
或者screen -r SESSION_ID
结束会话
Ctrl + D
或者 会话中执行exit
强制终止会话
screen -X -S SESSION_NAME quit
36. 不借助 netstat, ss, lsof 命令查看进程监听的端口
某些情况, 比如容器内, 没有netstat, ss, lsof这些命令的情况下查看端口监听情况
cat /proc/net/tcp
查看所有进程的监听情况cat /proc/1121/net/tcp
查看进程id为1121的端口监听情况
cat /proc/net/tcp | awk 'NR>1 { |