系统信息
cat /etc/system-release # 检查系统发布信息
cat /etc/os-release # 检查操作系统信息
date # 查看日期时间
sudo groupadd username # 添加用户
sudo useradd -g usergroup -m username # 加入用户组
sudo passwd username # 添加用户密码
sudo visudo # 添加免密使用sudo命令的权限文件末尾添加:avg ALL=(ALL) NOPASSWD:ALL
sudo chown usergroup:username /path # 修改文件夹的组和用户属性
sudo chmod 775 /path # 修改文件/文件夹的读/写/执行权限
echo 'username:password' | sudo chpasswd # 也可以这样修改用户名密码
运行
nohup /root/runoob.sh > runoob.log 2>&1 & # 启动后台程序 日志定向输出
# 在Shell/Bash脚本中
#!/bin/bash # 告诉编译器用bash shell执行(存在前缀'#'符号)
./test.sh arg1 arg2 # $0="./test.sh" $1="arg1" $2="arg2"
# eval 是bash中的一个内置命令,用于将字符串作为Shell命令执行,可能不安全
eval "echo 'Hello, World!'" # 输出: Hello, World!
rpm -ivh package.rpm # 使用 rpm 命令来安装程序包
镜像源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 备份原有源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 下载新的源,并命名为CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 或者这样,用的都是阿里的镜像
yum clean all # 清除系统所有的yum缓存
yum makecache # 生成yum缓存
Cmake
project(cppzmq-demo CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON) # 这两行指定C++11编译器
环境变量
vim ~/.bashrc # 用户环境变量配置文件
source ~/.bashrc # 配置文件生效
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/your/lib # 临时添加库路径
stty erase ^H # 将Backspace键(^H)作为删除键
网络
# 1. 查看网络状态
netstat
# -a 显示 所有活动连接 和监听端口(包括 TCP/UDP)
# -t 仅显示 TCP 协议相关的连接
# -u 仅显示 UDP 协议相关的连接
# -n 禁用域名解析,直接显示 IP 地址和端口号(加快输出速度)
# -p 显示占用端口的 进程名和 PID(需管理员权限)
# -l 仅显示 监听(LISTEN)状态 的端口
netstat -tulnp # 显示所有 TCP/UDP 监听端口及进程信息
netstat -antp # 显示所有 TCP 连接及进程信息
netstat -natupl # 较全信息
# 2. Tcpdump 抓包
sudo tcpdump -i any host 119.188.3.12 and port 20000 -w temp.pcap
# -i 指定物理/虚拟网口 any:所有
# host 目的主机
# and port 目的端口
# -w 写入文件名,pcap 文件可用于可视化分析
# 3. 检查UDP端口连通性
nc -uvz IP Port
# 4. 检查TCP端口连通性
telnet IP Port
# IP1:Port1监听: nc -l Port1
# IP2:Port2连接: telnet IP1 Port1
# 5. DNS服务器
cat /etc/resolv.conf # 查看DNS
nmcli connection show # 查询连接
sudo nmcli connection modify <连接名> ipv4.dns "8.8.8.8, 114.114.114.114" # 修改DNS
sudo nmcli connection down <连接名> && sudo nmcli connection up <连接名> # 应用更改
cat /etc/resolv.conf # 验证DNS
邮件
echo "content" | mail -s "title" -a test.txt someone@emil.com
# 内容 标题 附件 收件箱
mail -s "title" -a test.txt someone@emil.com < content.txt
# 标题 附件 收件箱 内容
数据库
# sqlite3 语句
create table new_table as select * from old_table where ... or ...; # 查询数据作为 new_table 表
drop table if exists old_table; # 删除表 old_table
alter table new_table rename to table_name; # 修改表名
# sqlite3 指令
VACUUM; # 清理未使用的空间
PRAGMA integrity_check; # 数据库一致性检查 ok->一致
PRAGMA table_info(table_name); # 查看table_name表字段信息
# 操作数据库
sqlite3 Database.db .dump > dump.sql # 导出建表语句和数据
sqlite3 Database.db < dump.sql # 用旧数据库dump数据创建新数据库
程序
#include <time>
// C++程序,便捷获取当前时间
char* timestamp_to_date(time_t timestamp) {
struct tm* tm_info = localtime(×tamp);
static char buffer[80];
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info);
return buffer;
}
char* ts = timestamp_to_date(time(NULL));
std::cout << ts << std::endl; // 2025-12-29 14:20:00
// GDB 调试
gdb ./your_program core.xxxx
(gdb) bt // 查看调用栈
(gdb) frame N // 切换到相关帧
(gdb) print str // 检查字符串对象
(gdb) print str.c_str() // 检查字符串内容
(gdb) x/s str.c_str() // 以字符串形式查看内存
(gdb) print _vecdataAccess._M_impl._M_start[0] // 检查vector
(gdb) print m_shared_ptr._M_ptr // 检查共享指针指向的对象