尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux虚拟机操作命令大合集:从基础到实战,提升运维效率

Linux虚拟机操作命令大合集:从基础到实战,提升运维效率 1. 从“能用”到“会用”为什么你需要这份命令合集如果你刚接触Linux或者正在虚拟机里折腾某个发行版大概率经历过这样的场景想复制个文件结果卡在cp命令的参数上想看看系统资源对着top命令里跳动的数字一头雾水网络不通了除了重启虚拟机好像别无他法。网上的命令大全一搜一大把但要么是简单的罗列要么是零散的片段真到用时还是得靠搜索引擎和反复试错。这份“Linux虚拟机操作命令大合集”的初衷就是解决这个痛点。它不是一个冰冷的命令字典而是结合了在虚拟机这个特定环境下的实战经验告诉你什么命令在什么场景下最有用以及执行命令时那些容易踩的坑。无论是用VMware Workstation、VirtualBox还是WSL2虚拟机环境与物理机总有细微差别比如网络配置、文件共享、性能调优、快照管理这些都需要特定的命令和技巧来应对。我整理这份合集源于自己多年在开发、运维和教学中的积累。很多命令只有在你真正遇到问题并解决后才会深刻理解它的价值。因此这里不仅有命令的语法更有它的使用场景、常见输出解读以及背后的原理浅析。目标是让你在虚拟机的方寸之间也能游刃有余地驾驭Linux从“输入命令能跑”的“能用”阶段进阶到“明白为何用此命令”的“会用”阶段。无论是为了学习、测试还是开发一份趁手的命令指南都能极大提升效率。2. 虚拟机环境下的核心操作领域与命令地图在虚拟机里操作Linux我们可以把常用场景归纳为几个核心领域。理解这个“地图”能帮助你在遇到问题时快速定位到正确的命令集而不是盲目尝试。2.1 系统信息与状态监控刚登录系统或者感觉系统变慢时首先需要了解它的“健康状况”。uname -a这是你的起点。它能一次性输出内核名称、主机名、内核发行版、内核版本、处理器类型和硬件平台信息。在虚拟机里它能帮你确认你安装的Linux发行版和内核版本是否与预期一致特别是在使用某些需要特定内核版本的软件时。lsb_release -a如果你的系统安装了lsb-release包这个命令能更清晰地显示发行版的详细信息包括发行版ID、描述、版本号和代号。这对于区分Ubuntu、CentOS、Debian等不同家族的系统非常有用。df -h查看磁盘空间使用情况。-h参数让结果以人类可读的格式GB MB显示。在虚拟机中磁盘空间是预分配的这个命令能帮你快速判断是否是磁盘已满导致了问题。重点关注/根目录和/home目录的使用率。free -h查看内存使用情况。同样使用-h参数。你需要关注的不仅是used已使用更重要的是available可用内存。Linux会利用空闲内存做缓存buff/cache所以即使used看起来很高available如果还充足系统性能就不受影响。uptime一个简单的命令告诉你系统运行了多久、当前有多少用户登录以及过去1、5、15分钟的系统平均负载。平均负载是一个关键指标它代表了处于可运行状态和不可中断状态的进程平均数。对于单核CPU1.00表示刚好满负荷对于多核比如虚拟机分配了2核负载在2.00以下通常都是健康的。top/htop这是动态监控进程和系统资源的利器。top是基础版而htop是其增强版界面更友好支持鼠标操作和颜色高亮。在htop里你可以清晰地看到每个进程的CPU、内存占用按F6可以按不同指标排序。当虚拟机卡顿时第一时间打开htop看看是哪个进程在“作怪”。2.2 文件与目录操作这是日常使用最频繁的部分虚拟机里操作文件经常涉及与宿主机的交互。pwdlscd基础三剑客。ls -la可以列出所有文件包括隐藏文件的详细信息。在虚拟机里你可能会在/mnt/hgfsVMware共享文件夹或/media目录下找到宿主机的共享文件。cpmvrm复制、移动/重命名、删除。关键点在于参数和权限。cp -r source_dir target_dir递归复制目录。mv old_name new_name重命名。mv file /path/to/dir/移动文件。rm -rf dir_name危险命令递归强制删除目录无确认。在虚拟机里操作这个命令前务必再三确认路径因为虚拟机快照虽然可以回滚但频繁回滚影响效率。scp与rsync这是虚拟机与宿主机、或者虚拟机之间传输文件的更佳方式尤其当图形界面拖拽不好用时。scp local_file userremote_ip:/remote/path从本地上传。scp userremote_ip:/remote/file local_path从远程下载。rsync -avzP source/ userremote_ip:/destination/rsync更强大支持增量同步、断点续传-P参数显示进度。在同步大量文件或需要保持同步时它是首选。find与locate查找文件。find功能强大但实时搜索可能慢locate基于数据库速度快但可能不是最新结果。find /home -name *.log -mtime 7在/home下查找7天前修改过的.log文件。先用updatedb更新数据库需要root权限再用locate nginx.conf快速定位配置文件。chmodchown权限管理。虚拟机中从宿主机共享过来的文件经常会出现权限问题如无法执行。chmod 755 script.sh给脚本赋予所有者可读可写可执行同组和其他用户可读可执行的权限。chown user:group file改变文件的所有者和所属组。当你用sudo解压了一个文件到当前目录可能需要用它把文件所有权改回自己的普通用户。2.3 网络诊断与配置虚拟机网络问题上不了网、宿主机和虚拟机无法互通是最常见的困扰之一。ip addr或ifconfig查看网络接口信息。ifconfig是传统命令较新的发行版推荐使用ip addr。它能显示所有网络接口的IP地址、MAC地址、状态。如果你的虚拟机没获取到IPinet字段为空那网络肯定不通。ping与traceroute或tracepath测试连通性和路由。ping -c 4 8.8.8.8向谷歌DNS发送4个包测试是否能通外网。ping -c 4 host_ip测试与宿主机的连通性。traceroute www.baidu.com追踪到目标地址经过的每一跳在哪里断了就一目了然。netstat或ss查看网络连接、路由表、接口统计。ss是netstat的现代替代速度更快。ss -tlnp查看所有TCP监听端口以及对应的进程这在排查端口冲突时非常有用。netstat -rn查看路由表确认默认网关是否正确。curl与wget命令行下载工具也是测试网络服务可用的好帮手。curl -I http://localhost:8080只获取HTTP响应头快速检查Web服务是否启动。wget http://example.com/file.tar.gz下载文件。虚拟机网络模式小贴士NAT模式虚拟机共享宿主机IP上网宿主机可以访问虚拟机但外部网络不能直接访问虚拟机。适合大多数上网场景。桥接模式虚拟机像一台独立主机与宿主机在同一局域网拥有独立IP。可以被局域网内其他机器访问。仅主机模式虚拟机与宿主机形成一个封闭网络只能两者互访不能上外网。用于纯隔离测试。 当网络不通时首先确认虚拟机网络适配器设置是否正确再在系统内用上述命令排查。2.4 进程管理与系统控制在虚拟机里跑服务、编译程序进程管理是基本功。ps查看进程快照。最常用的组合是ps aux或ps -ef可以查看所有用户的全部进程信息包括PID进程ID、CPU/内存占用、启动命令等。配合grep使用是常态ps aux | grep nginx。kill与killall终止进程。kill -9 PID强制杀死一个进程。-9是SIGKILL信号无法被进程捕获或忽略是最后的杀手锏。应先尝试kill -15 PIDSIGTERM让进程有机会做清理工作。killall process_name通过进程名来杀死进程例如killall java。systemctl现代Linux发行版Systemd的服务管理核心命令。systemctl start nginx启动服务。systemctl stop nginx停止服务。systemctl restart nginx重启服务。systemctl status nginx查看服务状态这是最常用的能显示是否活跃、最近的日志片段。systemctl enable nginx设置开机自启。systemctl disable nginx禁用开机自启。journalctl查看Systemd的日志是排查服务启动失败等问题的重要工具。journalctl -u nginx查看nginx服务的所有日志。journalctl -u nginx -f实时跟踪-fnginx的日志输出类似tail -f。journalctl --since 2023-10-01 09:00:00 --until 2023-10-01 10:00:00查看指定时间段的日志。crontab定时任务管理器。crontab -e编辑当前用户的定时任务。crontab -l列出当前用户的定时任务。 定时任务的格式是分 时 日 月 周 命令。在虚拟机里常用于定时备份、同步数据或执行定期检查脚本。3. 虚拟机专属场景高效操作与避坑指南虚拟机不是真机有些操作需要特别处理。这部分命令和技巧能让你在虚拟化环境里事半功倍。3.1 虚拟机工具与性能优化安装VMware Tools / VirtualBox Guest Additions这不是一个命令但比任何命令都重要。安装这些“增强工具包”后才能实现宿主机与虚拟机间的无缝复制粘贴、文件拖拽、屏幕自适应调整、时间同步等功能。以VMware为例在虚拟机菜单栏点击“虚拟机” - “安装VMware Tools”然后在虚拟机内挂载光盘并执行安装脚本。vmware-toolbox-cmd安装了VMware Tools后这个命令行工具非常有用。vmware-toolbox-cmd stat raw显示详细的虚拟机状态信息。vmware-toolbox-cmd timesync enable启用时间同步防止虚拟机时间漂移。资源监控与限制虚拟机性能受宿主机限制。除了用top还可以用iostat -xz 2每2秒显示一次磁盘I/O统计查看是否存在磁盘瓶颈。vmstat 1每1秒显示一次虚拟内存、进程、CPU等统计信息。 如果虚拟机卡顿在宿主机任务管理器里看看是否整体资源尤其是内存和CPU不足。快照管理快照是虚拟机的“后悔药”。虽然主要通过图形界面操作但理解其原理很重要快照保存了磁盘和内存的某个状态频繁创建或保留大量快照会严重占用磁盘空间并降低性能。重要操作前拍个快照是好习惯但长期运行的服务器虚拟机应谨慎使用。3.2 文件共享与数据交换除了前面提到的scp/rsync虚拟机平台通常提供更便捷的共享文件夹功能。VMware共享文件夹在VMware设置中指定宿主机的一个目录共享给虚拟机例如命名为shared。在虚拟机中共享的文件夹通常位于/mnt/hgfs/shared。如果该目录不存在可能需要手动挂载或检查VMware Tools是否安装正确。权限问题从宿主机共享的文件在虚拟机里可能属于root用户。你需要用chown或chmod来调整或者将你的用户加入fuse组sudo usermod -aG fuse $USER然后注销重登。VirtualBox共享文件夹设置共享文件夹并指定一个“挂载点”名称如vbox_share。在虚拟机中需要安装Guest Additions然后手动挂载sudo mount -t vboxsf vbox_share /path/to/mount_point。为了方便可以将挂载命令加入/etc/fstab实现开机自动挂载但语法略有不同。注意在涉及大量小文件读写时共享文件夹的性能可能不如虚拟机内部磁盘。对于开发编译等I/O密集型操作建议在虚拟机内部磁盘进行。3.3 常见故障排查命令链当虚拟机出现问题时遵循一个清晰的排查链路比胡乱尝试更有效。场景一虚拟机无法上网ip addr检查网卡如ens33是否获取到IP地址inet字段。如果没有检查虚拟机网络设置是否为NAT或桥接。ping 宿主机IP测试与宿主机的连通性。不通则检查宿主机防火墙、虚拟网络编辑器设置。ping 8.8.8.8测试外网连通性。不通但能通宿主机则可能是虚拟机内DNS设置问题检查/etc/resolv.conf文件。systemctl status NetworkManager或systemctl status networking检查网络服务是否正常运行。journalctl -u NetworkManager --since 5 minutes ago查看最近5分钟的网络服务日志寻找错误信息。场景二服务启动失败以Nginx为例systemctl status nginx第一眼查看状态通常会给出错误线索如“端口80已被占用”或“配置文件语法错误”。sudo nginx -t测试Nginx配置文件语法。这是最直接的检查方法。ss -tlnp | grep :80如果提示端口占用用此命令查看是哪个进程占用了80端口。journalctl -u nginx -f实时跟踪日志在尝试启动服务时观察具体的报错信息。检查配置文件路径ps aux | grep nginx查看主进程启动时加载的配置文件路径确认你修改的是否是同一个文件。场景三磁盘空间不足df -h确认是哪个分区满了。du -sh /path/* | sort -rh | head -10在疑似占用过大的目录下找出占用空间最大的前10个子目录或文件。清理根据上一步结果清理日志文件/var/log、缓存包/var/cache/apt/或/var/cache/yum、或不需要的Docker镜像/容器。对于虚拟机还可以考虑在宿主机层面扩展虚拟磁盘容量然后在虚拟机内使用fdisk和resize2fs针对ext文件系统或xfs_growfs针对xfs文件系统来扩容分区。4. 进阶组合与效率神器Shell的力量单个命令是武器而Shell脚本和管道是将武器组合成战法的关键。在虚拟机里做自动化运维、批量处理这几乎是必备技能。4.1 管道与重定向管道|将一个命令的输出作为另一个命令的输入。重定向、、用于操作输入输出流。ps aux | grep python | grep -v grep查找Python进程并排除掉grep进程本身。cat /var/log/syslog | grep error | tail -20 recent_errors.txt从系统日志中过滤出包含“error”的行取最后20行并保存到文件。command 21 | tee output.log将命令的标准输出和错误输出都重定向到屏幕同时保存到文件。tee命令非常实用。4.2 文本处理三剑客grep sed awkgrep文本搜索。grep -r function_name /path/to/code/递归搜索代码目录中所有文件。grep -E error|fail logfile使用扩展正则表达式匹配“error”或“fail”。sed流编辑器用于对文本进行替换、删除、插入等操作。sed -i s/old_string/new_string/g file.txt将文件中所有的old_string替换为new_string-i表示直接修改原文件。sed -n 10,20p file.txt只打印文件的第10到20行。awk强大的文本分析工具擅长处理列数据。awk -F: {print $1, $7} /etc/passwd以冒号:为分隔符打印/etc/passwd文件的第一列用户名和第七列登录shell。ps aux | awk {sum$4} END {print 内存占用总和, sum%}计算所有进程内存占用百分比的总和。4.3 实用脚本片段在虚拟机里你可以创建一些简单的脚本script.sh记得用chmod x script.sh赋予执行权限来简化重复工作。批量重命名文件#!/bin/bash # 将当前目录下所有 .txt 文件后缀改为 .bak for file in *.txt; do mv $file ${file%.txt}.bak done备份重要目录#!/bin/bash # 将 /home/myuser/project 备份到 /backup 目录并以日期命名 backup_dir/backup source_dir/home/myuser/project date_stamp$(date %Y%m%d_%H%M%S) tar -czf $backup_dir/project_backup_$date_stamp.tar.gz $source_dir echo 备份完成$backup_dir/project_backup_$date_stamp.tar.gz监控服务并自动重启#!/bin/bash # 检查Nginx服务是否运行如果停止则重启 service_namenginx if systemctl is-active --quiet $service_name; then echo $service_name is running. else echo $service_name is not running. Restarting... systemctl start $service_name # 可以添加发送邮件或记录日志的逻辑 fi可以将这个脚本加入crontab每分钟执行一次实现简单的进程守护。5. 安全与用户管理基础即使是个人使用的虚拟机养成良好的安全习惯也有益无害。5.1 用户与权限sudo以超级用户权限执行命令。/etc/sudoers文件定义了哪些用户能使用sudo。adduser newuser添加新用户。passwd username修改用户密码。usermod -aG groupname username将用户添加到附加组。例如将用户加入docker组以无需sudo运行docker命令sudo usermod -aG docker $USER然后需要注销并重新登录生效。visudo安全编辑sudoers文件的命令它会进行语法检查避免配置错误导致无法使用sudo。5.2 防火墙管理UFWUncomplicated FirewallUbuntu等发行版上简化了的iptables前端。sudo ufw enable/disable启用/禁用防火墙。sudo ufw allow 22/tcp允许TCP 22端口SSH。sudo ufw status numbered查看带有编号的规则列表方便后续删除sudo ufw delete 2。FirewalldCentOS/RHEL等发行版常用。sudo firewall-cmd --zonepublic --add-port80/tcp --permanent永久开放80端口。sudo firewall-cmd --reload重载配置使其生效。sudo firewall-cmd --list-all列出所有规则。5.3 密钥登录与SSH安全在虚拟机之间或与宿主机建立SSH连接时使用密钥比密码更安全。在客户端生成密钥对ssh-keygen -t rsa -b 4096一路回车会在~/.ssh/下生成id_rsa私钥和id_rsa.pub公钥。将公钥上传到服务器目标虚拟机ssh-copy-id userserver_ip。它会自动将公钥添加到服务器的~/.ssh/authorized_keys文件中。之后登录就不再需要密码。为了更安全可以禁用密码登录编辑服务器上的/etc/ssh/sshd_config设置PasswordAuthentication no然后重启SSH服务sudo systemctl restart sshd。这份命令合集会随着我的实践和大家的反馈持续更新。Linux的世界浩瀚如海命令只是工具真正的力量来自于理解系统运作的原理和将这些工具组合起来解决实际问题的思路。在虚拟机的沙盒里大胆尝试吧试错了大不了一个快照回滚这正是学习的最佳环境。
返回列表