一、 Linux 系统

1. 系统监控与性能排查

命令 说明 常用示例/参数
top / htop 动态实时查看系统进程、CPU、内存等使用情况。htop是增强版,更直观。 tophtop (需安装)
uptime 查看系统运行时间、负载平均值(1分钟、5分钟、15分钟)。 uptime
free 查看系统内存和Swap使用情况。 free -h (以人性化单位显示)
df 查看磁盘空间使用情况。 df -h
du 查看文件或目录的磁盘使用空间。 du -sh /path/to/dir (查看目录总大小)
iostat 查看CPU统计和磁盘I/O信息。 iostat -x 1 (每1秒显示一次扩展信息)
vmstat 报告虚拟内存、进程、CPU、磁盘I/O等统计信息。 vmstat 1
netstat / ss 查看网络连接、路由表、接口统计等。ss是现代替代品,更快 ss -tulnp (查看监听端口)
lsof 列出当前系统打开的文件。常用于排查“文件被哪个进程占用”。 lsof -i :8080 (查看谁占用了8080端口)
ps 报告当前进程的快照。 ps aux | grep nginx (查找nginx进程)

2. 文件与目录操作

命令 说明 常用示例/参数
grep 强大的文本搜索工具。 grep "error" logfilegrep -r "pattern" /dir (递归搜索)
find 在目录中搜索文件。 find /var/log -name "*.log" -mtime +7 (找7天前的日志)
awk 文本处理和分析语言,处理列数据非常强大。 awk '{print $1}' file (打印第一列)
sed 流编辑器,用于文本替换、删除等。 sed 's/foo/bar/g' file (将foo全局替换为bar)
tail / head 查看文件尾部/头部内容。 tail -f app.log (实时追踪日志) tail -n 100 app.log (看最后100行)
cp / mv / rm 复制 / 移动(重命名) / 删除 rm -rf dir (慎用!强制递归删除),cp -a src dst (归档模式,保留属性)
chmod 修改文件权限。 chmod 755 script.shchmod +x script.sh (添加执行权限)
chown 修改文件属主和属组。 chown user:group file

3. 网络工具

命令 说明 常用示例/参数
ping 测试网络连通性。 ping example.com
traceroute / mtr 跟踪数据包到达目标主机的路由路径。mtr是增强版。 mtr google.com
curl / wget 命令行下载工具,curl功能更强,常用于测试API。 curl -I http://site.com (仅获取HTTP头),wget url
telnet / nc (netcat) 检查远程端口是否通畅。 nc -zv host.com 3306telnet host.com 22

4. 系统管理

命令 说明 常用示例/参数
systemctl 控制系统服务(systemd系统)。 systemctl start nginx (启动),systemctl status nginx (状态)
journalctl 查看systemd管理的服务的日志。 journalctl -u nginx -f (查看并追踪nginx服务日志)
crontab 管理定时任务。 crontab -l (列出当前任务),crontab -e (编辑任务)

二、 数据库 (MySQL和Oracle)

1. 连接与基本操作

操作 MySQL Oracle
命令行客户端连接 mysql -u [用户名] -p -h [主机名/IP] [数据库名]
例:mysql -u root -p -h 192.168.1.100 mydb
sqlplus [用户名]/[密码]@//[主机名/IP]:[端口]/[服务名]
例:sqlplus system/password@//192.168.1.101:1521/ORCLCDB
查看当前数据库 SELECT DATABASE(); Oracle 的概念不同:用户与 schema 强关联。连接时即连接到某个 PDB。SHOW CON_NAME (在容器内) 查看当前容器。
列出所有数据库 SHOW DATABASES; Oracle 多租户架构
- 查看所有容器数据库(CDB)/可插拔数据库(PDB):
SELECT name, open_mode FROM v$pdbs; (需有权限)
- 切换到某个 PDB:ALTER SESSION SET CONTAINER = [PDB_NAME];
列出当前用户的所有表 SHOW TABLES; SELECT table_name FROM user_tables;
查看表结构 DESCRIBE [表名]; 或 SHOW CREATE TABLE [表名]; DESC [表名]; (在 SQL*Plus 中) 或查询 SELECT DBMS_METADATA.GET_DDL('TABLE', '[表名]', '[用户名]') FROM dual;

2. 用户与权限管理

操作 MySQL Oracle
创建用户 CREATE USER '[用户名]'@'[主机]' IDENTIFIED BY '[密码]';
例:CREATE USER 'dev'@'%' IDENTIFIED BY 'Passw0rd!';
CREATE USER [用户名] IDENTIFIED BY [密码] DEFAULT TABLESPACE [表空间名] QUOTA [大小] ON [表空间名];
例:CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users QUOTA 100M ON users;
授予权限 GRANT [权限] ON [数据库名].[表名] TO '[用户名]'@'[主机]';
例:GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'%';
GRANT [权限] TO [用户名];
例:GRANT CONNECT, RESOURCE TO scott;
GRANT SELECT, INSERT ON scott.emp TO another_user;
撤销权限 REVOKE [权限] ON [数据库名].[表名] FROM '[用户名]'@'[主机]'; REVOKE [权限] FROM [用户名];
刷新权限 FLUSH PRIVILEGES; (执行授权后通常需要) 权限在 Oracle 中立即生效,无需刷新。
修改密码 ALTER USER '[用户名]'@'[主机]' IDENTIFIED BY '[新密码]';
或 SET PASSWORD FOR ...
ALTER USER [用户名] IDENTIFIED BY [新密码];

3. 备份与恢复 (核心技能,命令差异巨大)

操作 MySQL Oracle
逻辑备份(导出) mysqldump 工具
mysqldump -u [用户] -p -h [主机] [数据库名] > backup.sql
数据泵(Data Pump) 工具,推荐方式
导出:expdp [用户]/[密码] DIRECTORY=[目录对象名] DUMPFILE=[文件名].dmp SCHEMAS=[用户名]
(传统 exp 工具已过时)
逻辑恢复(导入) mysql -u [用户] -p -h [主机] [数据库名] < backup.sql 数据泵(Data Pump)
导入:impdp [用户]/[密码] DIRECTORY=[目录对象名] DUMPFILE=[文件名].dmp REMAP_SCHEMA=[原用户]:[新用户]
物理备份 使用企业版或第三方工具(如 XtraBackup)进行热备。 RMAN (Recovery Manager),标准且强大。
示例命令:
RMAN> BACKUP DATABASE;
RMAN> BACKUP TABLESPACE users;

4. 状态与诊断

操作 MySQL Oracle
查看当前连接/会话 SHOW PROCESSLIST; SELECT sid, serial#, username, status, machine, program FROM v$session;
杀死会话 KILL [processlist_id]; 1. 查询会话:SELECT sid, serial# FROM v$session WHERE ...
2. 终止:ALTER SYSTEM KILL SESSION 'sid,serial#';
查看数据库运行状态和参数 SHOW STATUS;
SHOW VARIABLES LIKE '%buffer%';
SELECT name, value FROM v$parameter WHERE name LIKE '%sga%';
SELECT * FROM v$sysstat;
查看锁信息 SHOW ENGINE INNODB STATUS\G (查看Locks部分) SELECT * FROM v$locked_object;
SELECT * FROM v$lock;
查看表空间使用情况 SELECT table_schema, SUM(data_length+index_length)/1024/1024 AS Size_MB FROM information_schema.tables GROUP BY table_schema; SELECT tablespace_name, sum(bytes)/1024/1024 MB from dba_free_space group by tablespace_name;

5. Oracle 特有实用命令 (在 SQL*Plus 中)

  • 查看当前用户SHOW USER

  • 执行操作系统命令HOST [命令],例如 HOST ls -l

  • 编辑上一条 SQLEDIT (或 ED)

  • 运行外部 SQL 脚本@[脚本路径],例如 @/home/oracle/script.sql


关键差异总结

  1. 架构差异:MySQL 是 实例 -> 数据库 -> 表 的结构;Oracle 是 实例 -> 数据库 (CDB) -> 可插拔数据库 (PDB) -> 表空间 -> 表 的结构,用户(Schema)与 PDB 关联。

  2. 权限体系:MySQL 的权限与 '用户'@'主机' 绑定,更偏向网络层面;Oracle 的权限与用户直接绑定,更复杂精细,常用角色(如 CONNECTRESOURCE)来管理。

  3. 备份工具这是最大的不同点。MySQL 主要用 mysqldump 和 XtraBackup;Oracle 强烈推荐使用 RMAN 进行物理备份和 Data Pump (expdp/impdp) 进行逻辑备份,传统 exp/imp 已不再被推荐用于新系统。

  4. 元数据查询:MySQL 多用 SHOW 命令;Oracle 几乎全部通过查询数据字典视图 (如 dba_*all_*user_*v$*) 来完成。


三、 实用技巧

  1. 组合使用:Linux命令的强大之处在于可以用管道 | 组合。

    • grep "ERROR" application.log | awk '{print $2}' | sort \| uniq -c | sort -nr (统计错误日志中出现的错误类型及其次数并按频率排序)
  2. 后台运行:在命令后加 & 可使其在后台运行。使用 nohup command & 可以让命令在退出终端后继续运行。

  3. 命令历史:按 Ctrl + R 可以反向搜索历史命令。

  4. 谨慎操作:尤其在使用 rmddchmodchown 和数据库的 DELETEUPDATEDROP 命令时,一定要再三确认命令和条件是否正确。生产环境操作前最好先备份

  5. 善用手册:忘记命令用法时,使用 man [command] (如 man ls) 查看详细手册。