记得不久前跟大家大分享了一波个人在平时日常工作、学习、开发、写文字、做视频等过程中,一些好用高效的在线工具和网站,并且把自己的浏览器收藏夹书签离线文件都导出给大家了。
很多小伙伴后台反馈还不错,说书签一导入后,很多工具确实挺好用,主要省了很多找资源和整理的时间。

今天继续分享,最近花了不少时间把平时开发过程中常用的一些Linux系统命令给做了一个大整理,形成一个常用高频Linux速查备忘录。有了它,还怕Linux操作系统常用操作和命令记不住么?
接下来直接上菜吧。
注:本文 GitHub https://github.com/rd2coding/Road2Coding 已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及我的程序员人生。
| 常用命令 | 作用 |
|---|---|
| shutdown -h now | 即刻关机 |
| shutdown -h 10 | 10分钟后关机 |
| shutdown -h 11:00 | 11:00关机 |
| shutdown -h +10 | 预定时间关机(10分钟后) |
| shutdown -c | 取消指定时间关机 |
| shutdown -r now | 重启 |
| shutdown -r 10 | 10分钟之后重启 |
| shutdown -r 11:00 | 定时重启 |
| reboot | 重启 |
| init 6 | 重启 |
| init 0 | 立刻关机 |
| telinit 0 | 关机 |
| poweroff | 立刻关机 |
| halt | 关机 |
| sync | buff数据同步到磁盘 |
| logout | 退出登录Shell |
注意点:比如同样是关机,shutdown、poweroff、halt、init 0有什么区别呢?这个有兴趣可以自己了解一下,它们是有区别的。
这里命令其实平时用得是非常之多的,因为一旦系统或者后台服务除了问题,我们经常要登上去查看,包括很多的系统信息,比如:系统版本、内核版本、处理器架构、计算机名、环境变量、用户情况、负载情况、内存用量、磁盘信息、进程、网络连接…
| 常用命令 | 作用 |
|---|---|
| uname -a | 查看内核/OS/CPU信息 |
| uname -r | 查看内核版本 |
| uname -m | 查看处理器架构 |
| arch | 查看处理器架构 |
| hostname | 查看计算机名 |
| who | 显示当前登录系统的用户 |
| who am i | 显示登录时的用户名 |
| whoami | 显示当前用户名 |
| cat /proc/version | 查看linux版本信息 |
| cat /proc/cpuinfo | 查看CPU信息 |
| cat /proc/interrupts | 查看中断 |
| cat /proc/loadavg | 查看系统负载 |
| uptime | 查看系统运行时间、用户数、负载 |
| env | 查看系统的环境变量 |
| lsusb -tv | 查看系统USB设备信息 |
| lspci -tv | 查看系统PCI设备信息 |
| lsmod | 查看已加载的系统模块 |
| grep MemTotal /proc/meminfo | 查看内存总量 |
| grep MemFree /proc/meminfo | 查看空闲内存量 |
| free -m | 查看内存用量和交换区用量 |
| date | 显示系统日期时间 |
| cal 2021 | 显示2021日历表 |
| top | 动态显示cpu/内存/进程等情况 |
| vmstat 1 20 | 每1秒采一次系统状态,采20次 |
| iostat | 查看io读写/cpu使用情况 |
| sar -u 1 10 | 查询cpu使用情况(1秒一次,共10次) |
| sar -d 1 10 | 查询磁盘性能 |
这是和日常使用息息相关的一些常用命令,在Windows系统里面我们点点鼠标,图形化界面上就能查看,但是在Linux中我们应该熟练掌握用命令的方式来查看,比如:各种分区信息查看、磁盘使用情况、文件和目录大小、各种挂载和卸载…
| 常用命令 | 作用 |
|---|---|
| fdisk -l | 查看所有磁盘分区 |
| swapon -s | 查看所有交换分区 |
| df -h | 查看磁盘使用情况及挂载点 |
| df -hl | 查看磁盘剩余空间 |
| du -sh /dir | 查看指定目录大小 |
du -sk * | sort -rn | 从高到低依次显示文件和目录大小 |
| mount /dev/hda2 /mnt/hda2 | 挂载hda2盘 |
| mount -t ntfs /dev/sdc1 /mnt/usbhd1 | 指定文件系统类型挂载(如ntfs) |
| mount -o loop xxx.iso /mnt/cdrom | 挂载iso文件 |
| mount /dev/sda1 /mnt/usbdisk | 挂载usb盘/闪存设备 |
| umount -v /dev/sda1 | 通过设备名卸载 |
| umount -v /mnt/mymnt | 通过挂载点卸载 |
| fuser -km /mnt/hda1 | 强制卸载(慎用) |
Linux系统里用户组和用户本身也是一个非常重要的概念,这部分命令主要就是关于:用户的CRUD、用户组的CURD、然后还包括查用户、切换用户、改密码、查用户登录日志…
| 常用命令 | 作用 |
|---|---|
| useradd codesheep | 创建用户 |
| userdel -r codesheep | 删除用户 |
| usermod -g group_name user_name | 修改用户的组 |
| usermod -aG group_name user_name | 将用户添加到组 |
| usermod -s /bin/ksh -d /home/codepig –g dev codesheep | 修改用户codesheep的登录Shell、主目录以及用户组 |
| groups test | 查看test用户所在的组 |
| groupadd group_name | 创建用户组 |
| groupdel group_name | 删除用户组 |
| groupmod -n new_name old_name | 重命名用户组 |
| su - user_name | 完整切换到一个用户环境 |
| passwd | 修改口令 |
| passwd codesheep | 修改某用户的口令 |
| w | 查看活动用户 |
| id codesheep | 查看指定用户信息 |
| last | 查看用户登录日志 |
| crontab -l | 查看当前用户的计划任务 |
| cut -d: -f1 /etc/passwd | 查看系统所有用户 |
| cut -d: -f1 /etc/group | 查看系统所有组 |
我们作为一个后端开发,这些命令平时用到的概率很大,比如:查看网络、查看连接、查看端口服务、配置网卡/防火墙/路由表/DNS,查看和过滤进程,采集系统状态,还有一些系统性能的监控和排查命令…等等。这些命令,在后端开发连到公司服务器上去排查问题时就很有用了,用得也很频繁。
| 常用命令 | 作用 |
|---|---|
| ifconfig | 查看网络接口属性 |
| ifconfig eth0 | 查看某网卡的配置 |
| route -n | 查看路由表 |
| netstat -lntp | 查看所有监听端口 |
| netstat -antp | 查看所有已经建立的连接 |
| netstat -lutp | 查看TCP/UDP的状态信息 |
| ifup eth0 | 启用eth0网络设备 |
| ifdown eth0 | 禁用eth0网络设备 |
| iptables -L | 查看iptables规则 |
| ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | 配置ip地址 |
| dhclient eth0 | 以dhcp模式启用eth0 |
| route add -net 0/0 gw Gateway_IP | 配置默认网关 |
| route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 | 配置静态路由到达网络’192.168.0.0/16’ |
| route del 0/0 gw Gateway_IP | 删除静态路由 |
| hostname | 查看主机名 |
| host www.codesheep.cn | 解析主机名 |
| nslookup www.codesheep.cn | 查询DNS记录,查看域名解析是否正常 |
| ps -ef | 查看所有进程 |
ps -ef | grep codesheep | 过滤出你需要的进程 |
| kill -s name | kill指定名称的进程 |
| kill -s pid | kill指定pid的进程 |
| top | 实时显示进程状态 |
| vmstat 1 20 | 每1秒采一次系统状态,采20次 |
| iostat | 查看io读写/cpu使用情况 |
| sar -u 1 10 | 查询cpu使用情况(1秒一次,共10次) |
| sar -d 1 10 | 查询磁盘性能 |
这类命令平时接触得也很多,比如我们自己在安装和部署各种各样的基础编程环境和服务时就常用,比如装JDK、MySQL数据库、redis缓存、nginx服务器…
| 常用命令 | 作用 |
|---|---|
chkconfig --list | 列出系统服务 |
| service <服务名> status | 查看某个服务 |
| service <服务名> start | 启动某个服务 |
| service <服务名> stop | 终止某个服务 |
| service <服务名> restart | 重启某个服务 |
| systemctl status <服务名> | 查看某个服务 |
| systemctl start <服务名> | 启动某个服务 |
| systemctl stop <服务名> | 终止某个服务 |
| systemctl restart <服务名> | 重启某个服务 |
| systemctl enable <服务名> | 开启自启动 |
| systemctl disable <服务名> | 关闭自启动 |
这类命令全部是Linux系统使用的基本操作,也是平时用到频率最高的一些命令,关于文件操作的、关于目录操作的、关于路径的。比如:对文件和目录的各种高频操作,创建、查看、查找、删除、重命名、复制、软连接、快速定位和查找… 等等。都是些高频的实用命令。
| 常用命令 | 作用 |
|---|---|
| cd <目录名> | 进入某个目录 |
| cd … | 回上级目录 |
| cd …/… | 回上两级目录 |
| cd | 进个人主目录 |
| cd - | 回上一步所在目录 |
| pwd | 显示当前路径 |
| ls | 查看文件目录列表 |
| ls -F | 查看目录中内容(显示是文件还是目录) |
| ls -l | 查看文件和目录的详情列表 |
| ls -a | 查看隐藏文件 |
| ls -lh | 显示权限 |
| ls -lSr | more |
| tree | 查看文件和目录的树形结构 |
| mkdir <目录名> | 创建目录 |
| mkdir dir1 dir2 | 同时创建两个目录 |
| mkdir -p /tmp/dir1/dir2 | 创建目录树 |
| rm -f file1 | 删除’file1’文件 |
| rmdir dir1 | 删除’dir1’目录 |
| rm -rf dir1 | 删除’dir1’目录和其内容 |
| rm -rf dir1 dir2 | 同时删除两个目录及其内容 |
| mv old_dir new_dir | 重命名/移动目录 |
| cp file1 file2 | 复制文件 |
| cp dir/* . | 复制某目录下的所有文件至当前目录 |
| cp -a dir1 dir2 | 复制目录 |
| cp -a /tmp/dir1 . | 复制一个目录至当前目录 |
| ln -s file1 link1 | 创建指向文件/目录的软链接 |
| ln file1 lnk1 | 创建指向文件/目录的物理链接 |
| find / -name file1 | 从跟目录开始搜索文件/目录 |
| find / -user user1 | 搜索用户user1的文件/目录 |
| find /dir -name *.bin | 在目录/dir中搜带有.bin后缀的文件 |
| locate 关键词 | 快速定位文件 |
| locate *.mp4 | 寻找.mp4结尾的文件 |
| whereis halt | 显示某二进制文件/可执行文件的路径 |
| which halt | 查找系统目录下的二进制文件 |
| chmod ugo+rwx dir1 | 设置目录所有者(u)、群组(g)及其他人(o)的读(r)写(w)执行(x)权限 |
| chmod go-rwx dir1 | 移除群组(g)与其他人(o)对目录的读写执行权限 |
| chown user1 file1 | 改变文件的所有者属性 |
| chown -R user1 dir1 | 改变目录的所有者属性 |
| chgrp group1 file1 | 改变文件群组 |
| chown user1:group1 file1 | 改变文件的所有人和群组 |
这部分命令主要针对性地关于文件处理或者说文本处理,比如我们作为一个程序员,那操作最多的就是代码源文件,各种花式查看、比较、增加、删除、替换、合并… 等等一系列快速操作。
| 常用命令 | 作用 |
|---|---|
| cat file1 | 查看文件内容 |
| cat -n file1 | 查看内容并标示行数 |
| cat xxx.txt | awk ‘NR%2==1’ |
| tac file1 | 从最后一行开始反看文件内容 |
| more file1 | 查看一个长文件的内容 |
| less file1 | 类似more命令,但允许反向操作 |
| head -2 file1 | 查看文件前两行 |
| tail -2 file1 | 查看文件后两行 |
| tail -f /log/msg | 实时查看添加到文件中的内容 |
| grep codesheep hello.txt | 在文件hello.txt中查找关键词codesheep |
| grep ^sheep hello.txt | 在文件hello.txt中查找以sheep开头的内容 |
| grep [0-9] hello.txt | 选择hello.txt文件中所有包含数字的行 |
| sed ‘s/s1/s2/g’ hello.txt | 将hello.txt文件中的s1替换成s2 |
| sed ‘/^$/d’ hello.txt | 从hello.txt文件中删除所有空白行 |
| sed ‘/ *#/d; /^$/d’ hello.txt | 从hello.txt文件中删除所有注释和空白行 |
| sed -e ‘1d’ hello.txt | 从文件hello.txt 中排除第一行 |
| sed -n ‘/s1/p’ hello.txt | 查看只包含关键词"s1"的行 |
| sed -e ‘s/ *$//’ hello.txt | 删除每一行最后的空白字符 |
| sed -e ‘s/s1//g’ hello.txt | 从文档中只删除词汇s1并保留剩余全部 |
| sed -n ‘1,5p;5q’ hello.txt | 查看从第一行到第5行内容 |
| sed -n ‘5p;5q’ hello.txt | 查看第5行 |
| paste file1 file2 | 合并两个文件或两栏的内容 |
| paste -d ‘+’ file1 file2 | 合并两个文件或两栏的内容,中间用"+"区分 |
| sort file1 file2 | 排序两个文件的内容 |
| sort file1 file2 | uniq |
| sort file1 file2 | uniq -u |
| sort file1 file2 | uniq -d |
| comm -1 file1 file2 | 比较两个文件的内容(去除’file1’所含内容) |
| comm -2 file1 file2 | 比较两个文件的内容(去除’file2’所含内容) |
| comm -3 file1 file2 | 比较两个文件的内容(去除两文件共有部分) |
这部分内容主要关于文件或者目录的打包压缩和解压,涉及好几种压缩包格式和文件,这部分命令在平时用得也是非常非常频繁的。
| 常用命令 | 作用 |
|---|---|
| zip xxx.zip file | 压缩至zip包 |
| zip -r xxx.zip file1 file2 dir1 | 将多个文件+目录压成zip包 |
| unzip xxx.zip | 解压zip包 |
| tar -cvf xxx.tar file | 创建非压缩tar包 |
| tar -cvf xxx.tar file1 file2 dir1 | 将多个文件+目录打tar包 |
| tar -tf xxx.tar | 查看tar包的内容 |
| tar -xvf xxx.tar | 解压tar包 |
| tar -xvf xxx.tar -C /dir | 将tar包解压至指定目录 |
| tar -cvfj xxx.tar.bz2 dir | 创建bz2压缩包 |
| tar -jxvf xxx.tar.bz2 | 解压bz2压缩包 |
| tar -cvfz xxx.tar.gz dir | 创建gzip压缩包 |
| tar -zxvf xxx.tar.gz | 解压gzip压缩包 |
| bunzip2 xxx.bz2 | 解压bz2压缩包 |
| bzip2 filename | 压缩文件 |
| gunzip xxx.gz | 解压gzip压缩包 |
| gzip filename | 压缩文件 |
| gzip -9 filename | 最大程度压缩 |
然后接下来就是一些常见的包管理器命令。首先什么是包管理器,大家应该都清楚。
这么说吧,如果没有包管理器这个东西的存在,那估计仅仅是Linux系统上的软件安装,怕是就要劝退很多用户了,因为很多的软件依赖处理会让人抓狂。因此简单来说,我们可以将包管理器理解为,用来为Linux系统上的软件安装、卸载、升级、查询提供支持的组件,所以对于用户使用来说,一般就是一组工具命令集。
我们平常使用最广的比如,红帽子的包结构RPM包管理器,像RedHat、CentOS等系统都在用,典型的命令就是rpm命令、yum命令;然后就是DPKG包管理器,像Debain、Ubuntu等系统都用,典型的命令比如dpkg命令、apt软件工具。
| 常用命令 | 作用 |
|---|---|
| rpm -qa | 查看已安装的rpm包 |
| rpm -q pkg_name | 查询某个rpm包 |
| rpm -q --whatprovides xxx | 显示xxx功能是由哪个包提供的 |
| rpm -q --whatrequires xxx | 显示xxx功能被哪个程序包依赖的 |
| rpm -q --changelog xxx | 显示xxx包的更改记录 |
| rpm -qi pkg_name | 查看一个包的详细信息 |
| rpm -qd pkg_name | 查询一个包所提供的文档 |
| rpm -qc pkg_name | 查看已安装rpm包提供的配置文件 |
| rpm -ql pkg_name | 查看一个包安装了哪些文件 |
| rpm -qf filename | 查看某个文件属于哪个包 |
| rpm -qR pkg_name | 查询包的依赖关系 |
| rpm -ivh xxx.rpm | 安装rpm包 |
| rpm -ivh --test xxx.rpm | 测试安装rpm包 |
| rpm -ivh --nodeps xxx.rpm | 安装rpm包时忽略依赖关系 |
| rpm -e xxx | 卸载程序包 |
| rpm -Fvh pkg_name | 升级确定已安装的rpm包 |
| rpm -Uvh pkg_name | 升级rpm包(若未安装则会安装) |
| rpm -V pkg_name | RPM包详细信息校验 |
| 常用命令 | 作用 |
|---|---|
| yum repolist enabled | 显示可用的源仓库 |
| yum search pkg_name | 搜索软件包 |
| yum install pkg_name | 下载并安装软件包 |
| yum install --downloadonly pkg_name | 只下载不安装 |
| yum list | 显示所有程序包 |
| yum list installed | 查看当前系统已安装包 |
| yum list updates | 查看可以更新的包列表 |
| yum check-update | 查看可升级的软件包 |
| yum update | 更新所有软件包 |
| yum update pkg_name | 升级指定软件包 |
| yum deplist pkg_name | 列出软件包依赖关系 |
| yum remove pkg_name | 删除软件包 |
| yum clean all | 清除缓存 |
| yum clean packages | 清除缓存的软件包 |
| yum clean headers | 清除缓存的header |
| 常用命令 | 作用 |
|---|---|
| dpkg -c xxx.deb | 列出deb包的内容 |
| dpkg -i xxx.deb | 安装/更新deb包 |
| dpkg -r pkg_name | 移除deb包 |
| dpkg -P pkg_name | 移除deb包(不保留配置) |
| dpkg -l | 查看系统中已安装deb包 |
| dpkg -l pkg_name | 显示包的大致信息 |
| dpkg -L pkg_name | 查看deb包安装的文件 |
| dpkg -s pkg_name | 查看包的详细信息 |
| dpkg –unpack xxx.deb | 解开deb包的内容 |
| 常用命令 | 作用 |
|---|---|
| apt-cache search pkg_name | 搜索程序包 |
| apt-cache show pkg_name | 获取包的概览信息 |
| apt-get install pkg_name | 安装/升级软件包 |
| apt-get purge pkg_name | 卸载软件(包括配置) |
| apt-get remove pkg_name | 卸载软件(不包括配置) |
| apt-get update | 更新包索引信息 |
| apt-get upgrade | 更新已安装软件包 |
| apt-get clean | 清理缓存 |
除了上述内容,本次梳理还把那些高频实用的Linux命令给提了出来,并且做成了两种形式的离线文档,分别为PDF格式和高清图片格式,PDF方便电脑查看,高清图片则方便用手机查看,这样没事的功夫都可以拿出来在手机上瞅一瞅、看一看。

PDF文档大致长这样:


高清图片差不多长这样,有十几张,包含了几百条命令:

该文档 GitHub https://github.com/rd2coding/Road2Coding 已经收录。
另外最近花了大把力气,把自用的编程学习资源做了个大整理。
都是纯肝货,目录如下。

该内容 GitHub https://github.com/rd2coding/Road2Coding 已经收录,里面还有我整理的6大编程方向的自学路线+知识点大梳理、我的简历、面试考点、几本硬核pdf笔记,以及我的程序员人生,欢迎star。
整理不易,欢迎支持,下期见!

我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最
在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa
关于SSHkit-Github它说:Allbackendssupporttheexecute(*args),test(*args)&capture(*args)来自SSHkit-Rubydoc,我明白execute实际上是test的别名?test之间有什么区别?,execute,capture在Capistrano/SSHKit中我应该什么时候使用? 最佳答案 执行只是执行命令。使用非0退出引发错误。测试方法的行为与execute完全相同,但是它返回bool值(true如果命令以0退出,而false否则)。它通常用于控制任务中的流程