Linux采用单根倒置树状结构,所有文件和目录都从根目录/开始。这种设计哲学与Windows的多盘符结构截然不同,它通过挂载机制将各种存储设备统一整合到单一目录树中。这种架构的优势在于:
/bin与/sbin的区别:
/bin存放系统启动和运行所需的基础命令(如ls、cp等),所有用户可用/sbin存放系统管理命令(如fdisk、ifconfig等),通常只有root用户需要/usr目录的特殊性:
/usr已成为准根目录/var目录的动态特性:
/var/log:系统日志/var/spool:打印队列和邮件队列/var/cache:应用程序缓存数据/proc虚拟文件系统:
/proc/cpuinfo:CPU信息/proc/meminfo:内存信息/proc/net:网络状态信息/dev设备目录:
查看所有环境变量:
bash复制env
# 或
printenv
查看特定环境变量:
bash复制echo $PATH
echo $LD_LIBRARY_PATH
高级技巧:使用grep过滤特定环境变量
bash复制env | grep -i path
临时设置(当前终端有效):
bash复制export MY_VAR="value"
永久设置(用户级别):
bash复制echo 'export MY_VAR="value"' >> ~/.bashrc
source ~/.bashrc
系统级设置(所有用户):
bash复制sudo sh -c 'echo "export MY_VAR=value" >> /etc/profile'
source /etc/profile
静态分析(未运行程序):
bash复制ldd /path/to/program
动态分析(运行中程序):
bash复制ps aux | grep program_name
bash复制pmap -p PID | grep .so
# 或
lsof -p PID | grep .so
常见问题现象:
排查步骤:
设置LD_LIBRARY_PATH:
bash复制export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH
./program
用户级配置:
bash复制echo 'export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
系统级配置:
bash复制sudo sh -c 'echo "/path/to/libs" > /etc/ld.so.conf.d/custom.conf'
sudo ldconfig
设置rpath:
bash复制gcc -o program program.c -Wl,-rpath=/path/to/libs
查看所有TCP连接:
bash复制ss -t -a
查看UDP连接:
bash复制ss -u -a
查看监听端口及进程:
bash复制ss -tulnp
查看连接状态统计:
bash复制ss -s
过滤特定状态的连接:
bash复制ss -t state established
ss -t state time-wait
使用watch命令实时监控:
bash复制watch -n 1 "ss -tulnp | grep 80"
特殊权限位:
设置特殊权限:
bash复制chmod 4755 file # 设置SUID
chmod 2755 dir # 设置SGID
chmod 1777 /tmp # 设置Sticky
文件权限建议:
目录权限建议:
递归修改权限:
bash复制chmod -R 755 /path/to/dir
警告:递归修改权限时要特别小心,避免误操作导致系统问题
快速查找命令:
bash复制apropos keyword
命令历史搜索:
bash复制Ctrl+R
快速清空文件:
bash复制> filename
查看系统信息:
bash复制uname -a
lsb_release -a
磁盘空间检查:
bash复制df -h
du -sh *
内存使用情况:
bash复制free -h
服务无法启动:
systemctl status servicejournalctl -u servicess -tulnp | grep port性能问题排查:
uptimetop或htopiostat -x 1禁用root远程登录:
bash复制sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
配置防火墙:
bash复制sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
更新系统:
bash复制sudo apt update && sudo apt upgrade -y
# 或
sudo yum update -y
清理旧内核:
bash复制sudo apt autoremove --purge
# 或
sudo package-cleanup --oldkernels --count=1
配置日志轮转:
bash复制sudo vim /etc/logrotate.conf
设置磁盘空间告警:
bash复制df -h | awk '$5 > 90 {print $1 " is almost full: " $5}'
调整swappiness:
bash复制echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
文件描述符限制:
bash复制echo '* soft nofile 65535' | sudo tee -a /etc/security/limits.conf
echo '* hard nofile 65535' | sudo tee -a /etc/security/limits.conf
Nginx优化:
nginx复制worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
MySQL优化:
ini复制innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
query_cache_size = 64M
文件系统选择:
挂载选项优化:
bash复制/dev/sdb1 /data xfs defaults,noatime,nodiratime 0 0
查看运行容器:
bash复制docker ps
查看容器日志:
bash复制docker logs container_name
进入容器:
bash复制docker exec -it container_name /bin/bash
查看集群节点:
bash复制kubectl get nodes
查看Pod状态:
bash复制kubectl get pods -A
查看服务:
bash复制kubectl get svc
查看容器网络:
bash复制docker inspect container_name | grep IPAddress
网络连通性测试:
bash复制docker exec container_name ping 8.8.8.8
端口映射检查:
bash复制docker port container_name
在实际运维工作中,这些命令和技巧需要根据具体场景灵活运用。建议建立自己的命令手册,定期整理和更新常用操作。遇到问题时,先理清思路,再选择合适的工具进行排查,避免盲目操作。