Linux 中查看网络连接信息命令 netstat 的常见用法
1. 命令 netstat 的作用netstat 命令用于打印网络连接、路由表、接口统计、伪装连接和多播成员信息。
因为我本人不是专业搞网络的,我最常用的就是用 netstat 打印网络信息,主要是看看 IP、端口什么的,验证一些程序的网络是否正常等。所以本文要给出的可能也是 netstat 最泛用的几个方法(选项),不管是不是专业搞网络的人应该都在某些场景里会用得上。
本文主要参考自 netstat(8) — Linux manual page 中的查看网络连接部分,其他部分感兴趣可以自己看看。
2. netstat 查看网络连接netstat 查看网络连接信息的命令如下:
1netstat [address_family_options]
其实就是命令 netstat 命令后接地址族选项。默认情况下,netstat 显示打开的套接字列表。如果我们不指定任何地址族,那么将打印所有已配置地址族的活动套接字。
与网络连接信息相关的地址族选项有:
-t --tcp:打印使用 TCP 协议网络连接信息。
-u --udp:打印使用 UDP 协议网络连接信息。
-U --udplite:打印 ...
Linux 中查看进程信息命令 ps 的常见用法
ps 命令用于查看当前进程的快照信息,其功能很多,本文只介绍我个人常用的。完整手册见 ps(1) — Linux manual page。
ps 命令通常需要配合选项使用,如果不加选项的话,只会打印出当前 bash 和 ps 本身的简略进程信息:
1234$ ps PID TTY TIME CMD2057074 pts/0 00:00:00 bash2057151 pts/0 00:00:00 ps
不加选项的 ps 命令通常没什么意义,所以我们需要配合选项使用。
1. 参数的种类与大多程序不同,ps 命令有三种选项种类:
Unix 选项,必须以前缀 - 开始,如 ps -ef。
BSD 选项,必须没有前,如 ps aux。
GNL 长选项,必须以前缀 -- 开始,如 ps --deselect。
不同类型的选项可以自由组合,但使用不当可能会发生冲突。
有一些选项是同义的,功能完全相同,但 ps 的实现中为了兼容性而将这些同义的选项都保留了下来。
由于 ps 选项比较多,本文不打算逐一介绍,而是按场景介绍,讲述每个场景该怎么用(用哪些选项),为什 ...
Unable to load authentication plugin 'caching_sha2_password'
1. 报错信息使用某工具连接 MySQL 服务器时,报错:
1Unable to load authentication plugin 'caching_sha2_password'.
此报错信息翻译过来是说,无法加载身份验证插件 caching_sha2_password。
2. 错误分析此错误的根本原因是:MySQL 在 8 版本后使用了新的身份验证插件 caching_sha2_password,而在 8 以前的身份验证插件是 mysql_native_password。
我这里的 MySQL 版本为 8.0.28,我们可以查看下当前的默认身份验证插件的确是 caching_sha2_password:
1234567mysql> show variables like "default_authentication_plugin";+-------------------------------+-----------------------+| Variable_name | Value ...
配置 NFS 实现 Linux 之间的目录共享
网络文件系统(英语:Network File System,缩写作 NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由Sun Microsystems(已被甲骨文公司收购)开发,于1984年发布。NFS 的实现基于 ONC RPC(一个开放、标准的RFC系统,任何人或组织都可以依据标准实现它)。
本文仅介绍 NFS 最简单的用法:在两台不同的 Linux 机器上共享目录。
而 NFS 那些更复杂的用法基本也都是在此简单用法之上的拓展,深入了解配置,举一反三便能做到。
-
我这里以一个简单地实例的实现,来阐述整个过程:
假设有 A 和 B 两台不同的但可以相互连接的 Linux 服务器(我这里均以 CentOS 系统举例),我们要将 A 服务器上的 /nfs-shared/ 目录共享给 B 服务器。在 B 服务器上,将 A 服务器上共享来的目录,挂载(NFS 是通过挂载的方式来访问共享内容的)到自己 /nfs-shard-from-server/ 目录。完成后,A 服务器访问自己的 /nfs-shared/ 目录,与 B 服务器访问目录 ...
Docker 快速开始与基本用法
本人不是 docker 重度用户,也不是从事运营 docker 或 k8s 相关工作的运维人员。我使用 docker 通常是偶尔试一些东西,避免把服务器环境搞乱;或者是想在一个相对干净的环境中临时编译一个项目等。所以我属于比较轻度的 docker 用户,基本上也就只会用到一些基础功能。本文也不会介绍相对复杂的 Dockerfile 配置。
本文的主要目标是:
从 0 快速启动一个 docker 容器,并使用 ssh 登录该容器。
给出一些 docker 比较常用的操作和容器配置(至少是作为轻度用户的我比较常用的)。
本文使用的 Linux 发行版为 CentOS 8。
另外,docker 的安装和使用默认需要 root 权限,如果你需要在没有权限的用户里使用 docker,请查阅官方文档。
1. 安装 Docker1.1. 卸载旧版本 Docker旧版本的 docker 的包名叫做 docker 或者 docker-engine,我们需要把旧版本的 docker 卸载掉(如果有的话):
12345678sudo yum remove docker \ ...
Linux 一键更换国内软件源
通常我是在自己的 Linux 机器上配置代理的,但是确实也有很多场景配置代理是不容易操作的。
为了能顺利安装一些软件,也只能是换国内软件源咯。
更换国内软件源这件事有大佬编写的脚本我们可以拿来直接用,项目地址是 GitHub 或 Gitee。
基本上各种主流的 Linux 发行版都能用,这里就不多说了,更详细的信息可以看项目地址。这里直接说咋用。
用法非常简单:
12wget https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.shsudo sh ChangeMirrors.sh
即可进入脚本提供的交互界面,像下面这样:
123456789101112131415161718192021222324252627282930313233343536373839+---------------------------------------------------+| || ================= ...
在 VSCode 中配置使用 CMake 的 Linux C/C++ 开发环境
本文默认你已经有在 VSCode 中配置 Linux C/C++ 开发环境的经验。前置微软官方文档 Gcc on Linux。我们知道,在配置 C/C++ 的常规方法中,VSCode 会在项目目录中生成一个名为 .vscode 的隐藏文件夹,里面放着一些相关的配置 json 文件。其中与 C/C++ 环境开发有关的主要有三个:
task.json:编译器的编译相关配置。例如编译命令、编译参数设置等等。
launch.json:调试相关的配置。例如调试器路径、调试目录配置等。
c_cpp_properties.json:编译器路径和智能提示(Intellisense)设置。例如 C++ 版本、用于智能提示的头文件路径设置等。
而如果使用 CMake 的话,我们就只需要配置 CMakeLists.txt 文件(可能是多个)就可以了。
本文用于在 VSCode 中配置使用 CMake 的 Linux C/C++ 开发环境的快速入门,关于更深入的内容,建议看:
CMake Tools for Visual Studio Code documentation:微软官方出的在 VSCode ...
如何创建一个 Linux RPM 包
这篇文章包含以下内容:
什么是 RPM 包。
如何创建一个 RPM 包。
如何安装(install)、查询(query)、移除(remove)一个 RPM 包。
RPM 相关功能非常强大,并非一篇文章所能涵盖,本文相关内容仅用于入门。如果你有本文没有提到的、更复杂的需求,建议参考官方指导:RPM Packaging Guide。
1. 什么是 RPM 包?RPM 全称 Red Hat Package Manager,即红帽包管理器,这是一个由 Red Hat 开发,主要用在基于红帽的操作系统上的(如 Fedora、CentOS、RHEL 等)。
RPM 包使用 .rpm 扩展名,是一个不同文件的捆绑包(一个集合),其可以包含以下内容:
二进制文件,也就是我们常说的可执行文件(如 nmap、stat、xattr、ssh、sshd 等)。
配置文件(如 sshd.conf、updatedb.conf,logrotate.conf 等)。
文档文件(如 README、TODO、AUTHOR 等)。
RPM 包的文件名格式如下:1<name>-<version&g ...
我的 Vim 常用配置与命令笔记
首先说明呢,我并不是 vim 的深度用户,我只是经常 ssh 到远程机器上编辑一些文件什么的,这时候 vim 就顺手用了。
所以呢,这篇文章记录的也都是些简单的东西,vim 高级功能我也用不上。
1. vim 常用配置记录我的常用配置呢,主要就是每当我登录一个新机器并且需要使用 vim 的时候,可以把这里的配置直接 copy 一份省时省力 ~
当然我还是会说明每个配置项是干啥的。
vim 的配置文件有两个,一个是全局的 /etc/vimrc,一个是用户级的 ~/.vimrc,用户级的优先级高。注意这里全局的 /etc/vimrc 文件名没有前缀 .。
编辑哪个都可以,这里就编辑用户级的 ~/.vimrc 了(不过如果你有在非 root 用户下 sudo vim 编辑的需求的话,建议把 /etc/vimrc 也改了):
1vim ~/.vimrc
(注意不管是全局的还是用户级的配置文件,如果默认不存在的话,直接通过 vim 自动创建并编辑保存就好了,我们追加写就可以,可以不改原本有的配置 ~)
前面的单引号表示注释 "。
12345678910set fileencodings ...
我的 Git 常用命令笔记
1. 基础命令这篇文章并不是一次性写完的,而是我想到什么就加进来什么的,所以下面的顺序并不重要。
1.1. 修改本地分支名字1git branch -m <old_branch_name> <new_branch_name>
修改后会与关联的远程分支失去联系,首次 push 需要指定远程分支,一般在你首次 push 的时候会给你个提示,告诉你怎样做,好解决。
比如我将本地的 master 分支改名为 main,然后首次 push 应当这样:
1git push origin HEAD:master
这样会将本地的 main 分支与远程的 master 分支关联,就可以正常使用了。
修改本地分支关联的远程分支:
1git branch --set-upstream-to=<remote_rep_name>/<remote_branch_name> <local_branch_name>
例如:
1git branch --set-upstream-to=origin/main main
将本地分支 main 的与远程仓库 ori ...