菜鸟科技网

Linux start命令如何正确使用?

在标准的 Linux 命令行中,并没有一个名为 start 的内置命令或核心程序。

Linux start命令如何正确使用?-图1
(图片来源网络,侵删)

这个命令是 Windows 系统中特有的,在 Windows 的 cmd.exe 命令提示符中,start 命令用于启动一个单独的窗口来运行指定的程序或命令。


为什么你会在 Linux 中看到 start 命令?

这通常有以下几种情况:

  1. 你在使用 WSL (Windows Subsystem for Linux):在 WSL 环境中,为了方便地调用 Windows 程序,start 命令被作为一个兼容性命令提供,它的作用是在 Windows 端启动一个程序。
  2. 你安装了某个特定软件包:某些软件包可能会为了兼容性或特定功能而提供一个 start 命令,但这非常罕见。
  3. 你写了一个名为 start 的脚本:用户自己创建的脚本文件。

鉴于 start 在 Linux 中不是一个标准命令,下面我将重点讲解它在 WSL 环境下的用法,因为这是最常见和最有价值的场景,之后,我会介绍在 Linux 中实现类似 start 功能(即“后台运行”)的标准方法。


start 命令在 WSL 中的用法

在 WSL 中,start 命令的主要作用是将命令传递给 Windows 系统去执行,它相当于一个桥梁,让你可以在 Linux 终端里无缝地启动 Windows 应用或程序。

Linux start命令如何正确使用?-图2
(图片来源网络,侵删)

基本语法

start [选项] "标题" 命令/程序名 [参数]
  • 选项:控制启动方式(如 min 最小化,max 最大化,d 使用默认目录等)。
  • 为新启动的窗口指定一个标题(可选,但推荐,特别是当路径或命令包含空格时)。
  • 命令/程序名:这是要执行的 Windows 命令或可执行文件的路径。
  • [参数]:传递给命令或程序的参数。

常见用法示例

打开一个 Windows 文件夹

# 在 Windows 资源管理器中打开当前 WSL 目录对应的 Windows 路径
start .
# 打开特定的 Windows 文件夹
start "C:\Users\YourUser\Documents"

启动 Windows 应用程序

# 启动记事本
start notepad.exe
# 启动计算器
start calc.exe
# 启动一个特定的程序,并带上参数
# 用记事本打开一个配置文件
start notepad.exe "C:\my_app\config.ini"

使用选项

# 启动记事本,并使其窗口最大化
start max notepad.exe
# 启动一个程序,但不等待它结束,直接返回 Linux shell
# 这在 WSL 中是默认行为,但可以明确使用 /b (background) 选项
start /b notepad.exe

打开网页

Linux start命令如何正确使用?-图3
(图片来源网络,侵删)
# 使用默认浏览器打开一个网址
start https://www.google.com

重要提示:在 WSL 中,start 命令查找的是 Windows 系统中的程序,如果你想在 Linux 中启动一个 Linux 程序(geditfirefox),你应该直接运行 geditfirefox,而不是 start gedit


在标准 Linux 中实现“启动”程序的功能

在标准的 Linux 环境中,我们通常使用不同的命令来实现类似 Windows start 的功能,核心思想是将任务放到后台运行

& (Ampersand) - 最简单的方式

在命令的末尾加上 & 符号,就可以让命令在后台运行,并立即返回命令行提示符。

# 在后台打开一个文本编辑器 gedit
gedit &
# 在后台解压一个大型压缩包
unzip large_file.zip &
# 查看后台任务
jobs

特点

  • 命令会继承当前终端的输入/输出。
  • 如果命令有输出,它会直接打印到你的终端上,可能会干扰你当前的操作。
  • 如果你关闭了启动它的终端,这个后台任务通常会被终止。

nohup (No Hang Up) - 让命令忽略终端关闭

nohup 命令可以让程序忽略 SIGHUP(挂断)信号,这意味着即使你关闭了终端,程序也会继续运行。

# nohup 默认会将命令的输出重定向到一个名为 nohup.out 的文件中
nohup long_running_script.sh &
# 你也可以指定输出文件
nohup long_running_script.sh > my_output.log 2>&1 &

特点

  • 程序在完全独立于终端的后台运行。
  • 即使终端关闭,程序也会继续执行。
  • 输出会被重定向到文件,不会干扰你的终端。

disown - 从 shell 的任务列表中移除

disownbash 内置的一个命令,它可以将一个已存在的后台任务从 shell 的作业表中移除,这样它就不会受到终端关闭的影响。

# 1. 先在后台运行一个任务
sleep 300 &
# 2. 查看任务 ID
jobs
# [1]  + running    sleep 300
# 3. 从作业表中移除该任务
disown -h %1  # %1 是任务 ID
# 4. 现在关闭终端,sleep 命令会继续运行

screentmux - 终端复用器(最强大的方式)

screentmux 是两个强大的终端复用工具,它们可以创建一个持久的会话,你可以在其中运行程序,即使你断开连接,这个会话和其中的程序也会继续运行,你可以随时重新连接回来。

使用 tmux (推荐)

# 1. 创建一个新的 tmux 会话
tmux new -s my_session
# 2. 在新会话中运行你的程序,比如一个长时间运行的脚本
./long_running_script.sh
# 3. 按 Ctrl+B,然后按 D,可以分离(detach)会话,回到你的主终端
# long_running_script.sh 仍在 my_session 会话中继续运行
# 4. 查看所有会话
tmux ls
# 5. 重新连接到会话
tmux attach -t my_session

特点

  • 功能最强大,可以管理多个终端窗口和会话。
  • 提供了持久化的能力,非常适合服务器管理。
  • 可以轻松地断开和重连。

总结对比

命令/工具 主要用途 适用环境 特点
start 在 WSL 中调用 Windows 程序 WSL 桥接 Windows 和 Linux,不是 Linux 原生命令。
& 在后台运行一个命令,立即返回 任何 Linux Shell 简单,但终端关闭任务可能终止。
nohup 让命令在后台持续运行,忽略终端关闭 任何 Linux Shell 保证任务在后台持续运行,输出重定向到文件。
disown 将已运行的后台任务与终端解绑 Bash/Zsh 等 在任务运行后使用,灵活性高。
tmux / screen 创建持久化的终端会话 任何 Linux Shell,尤其服务器 功能最全面,可断开/重连,管理复杂任务。
  • 如果你使用 WSLstart 是一个非常有用的工具,用于启动 Windows 应用。
  • 如果你使用标准的 Linux 系统,并且想要实现“启动程序后立即返回”的功能,请使用 &
  • 如果你需要确保程序在关闭终端后继续运行,请使用 nohuptmux/screentmux/screen 是更现代、更强大的解决方案。
分享:
扫描分享到社交APP
上一篇
下一篇