菜鸟科技网

如何通过命令启动服务?

核心概念:什么是“服务”?

在命令行语境下,“服务”通常指一个在后台长时间运行、没有用户界面的程序,它可以是:

如何通过命令启动服务?-图1
(图片来源网络,侵删)
  • 操作系统级服务:如 Web 服务器、数据库、网络服务等。
  • 应用程序:如你编写的 Python/Node.js 脚本、一个游戏服务器等。
  • 容器化服务:如通过 Docker 运行的应用。

在 Linux 系统中启动服务

Linux 系统中,最常用的是 systemd 初始化系统(CentOS 7+, Debian 8+, Ubuntu 16.04+ 及以后版本),如果你的系统较老,可能会使用 SysVinit (service 命令)。

方法 A:使用 systemctl (现代 Linux 系统,推荐)

这是目前最主流和推荐的方式。

启动服务

# 语法: sudo systemctl start <服务名>
# 示例: 启动 Nginx Web 服务器
sudo systemctl start nginx
# 示例: 启动 MySQL 数据库服务
sudo systemctl start mysql

查看服务状态

如何通过命令启动服务?-图2
(图片来源网络,侵删)
# 语法: sudo systemctl status <服务名>
# 示例: 查看 Nginx 服务状态
sudo systemctl status nginx

如果服务正在运行,输出会是绿色的,并显示 active (running)

停止服务

# 语法: sudo systemctl stop <服务名>
# 示例: 停止 Nginx
sudo systemctl stop nginx

重启服务 (先停止,再启动)

# 语法: sudo systemctl restart <服务名>
# 示例: 重启 Nginx (通常在修改了配置文件后使用)
sudo systemctl restart nginx

重新加载服务 (不中断服务) 当只修改了配置文件时,使用 reloadrestart 更好,因为它不会中断当前的服务连接。

如何通过命令启动服务?-图3
(图片来源网络,侵删)
# 语法: sudo systemctl reload <服务名>
# 示例: 重新加载 Nginx 配置
sudo systemctl reload nginx

设置服务开机自启

# 语法: sudo systemctl enable <服务名>
# 示例: 设置 Nginx 在开机时自动启动
sudo systemctl enable nginx

禁止服务开机自启

# 语法: sudo systemctl disable <服务名>
# 示例: 禁止 Nginx 开机自启
sudo systemctl disable nginx

方法 B:使用 service 命令 (旧版 Linux 系统)

在一些老版本的系统(如 CentOS 6, Ubuntu 14.04)上,你会使用 service 命令。

启动服务

# 语法: sudo service <服务名> start
# 示例: 启动 Apache Web 服务器
sudo service httpd start

查看服务状态

# 语法: sudo service <服务名> status
# 示例: 查看 Apache 服务状态
sudo service httpd status

停止服务

# 语法: sudo service <服务名> stop
# 示例: 停止 Apache
sudo service httpd stop

重启服务

# 语法: sudo service <服务名> restart
# 示例: 重启 Apache
sudo service httpd restart

在 Windows 系统中启动服务

Windows 使用 sc (Service Control) 命令或 PowerShell 来管理服务。

方法 A:使用 sc 命令 (命令提示符 CMD)

启动服务

# 语法: sc start <服务名>
# 示例: 启动 Windows Update 服务
sc start wuauserv

查询服务状态

# 语法: sc query <服务名>
# 示例: 查询 Windows Update 服务状态
sc query wuauserv

状态为 RUNNING 表示正在运行。

停止服务

# 语法: sc stop <服务名>
# 示例: 停止 Windows Update 服务
sc stop wuauserv

方法 B:使用 PowerShell (更现代、功能更强大)

启动服务

# 语法: Start-Service -Name <服务名>
# 示例: 启动 Windows Update 服务
Start-Service -Name wuauserv

查看服务状态

# 语法: Get-Service -Name <服务名>
# 示例: 查看 Windows Update 服务状态
Get-Service -Name wuauserv

状态为 Running 表示正在运行。

停止服务

# 语法: Stop-Service -Name <服务名>
# 示例: 停止 Windows Update 服务
Stop-Service -Name wuauserv

启动你自己的应用程序服务

如果你有一个需要后台运行的自定义程序(例如一个用 Python 或 Node.js 写的 Web 服务器),通常不会直接把它注册成系统服务,而是使用进程管理工具。

方法 A:直接运行 (不推荐用于生产环境)

最简单的方式,但终端关闭后程序也会退出。

# 在 Linux/macOS/WSL 中
python my_app.py
# 在 Windows CMD 中
python my_app.py

方法 B:使用 nohup (Linux/macWSL)

让程序在后台运行,即使你关闭了终端,它也会继续。

# nohup 表示 "no hang up"
# & 表示在后台运行
# 输出会默认写入 nohup.out 文件
nohup python my_app.py &

方法 C:使用 screentmux (Linux/macWSL)

更强大的工具,可以让你创建多个终端会话,即使断开连接,程序也会在后台的会话中运行。

# 安装 screen (如果未安装)
sudo apt-get install screen  # Debian/Ubuntu
sudo yum install screen      # CentOS/RHEL
# 创建一个新会话
screen -S my_app_session
# 在新会话中运行你的程序
python my_app.py
# 按 Ctrl+A, 然后按 D 来分离会话,回到主终端
# 你可以安全地关闭终端了
# 重新连接到会话
screen -r my_app_session

方法 D:使用专业的进程管理器 (推荐)

对于生产环境,使用专业的进程管理器是最佳实践,它们可以自动重启崩溃的、记录日志、管理多进程等。

  • Linux/macOS/Windows: systemd 你可以编写一个 .service 文件来管理你的应用,把它变成一个真正的系统服务,这是最稳定的方式。

  • Node.js: pm2

    # 安装 pm2
    npm install -g pm2
    # 启动你的应用
    pm2 start app.js --name "my-api"
    # 查看所有进程状态
    pm2 list
    # 停止进程
    pm2 stop my-api
  • Python: Gunicorn + Supervisor / systemd

    • Gunicorn 是一个 WSGI HTTP 服务器,用于运行 Python Web 应用。
    • Supervisorsystemd 用来管理 Gunicorn 进程,确保它在后台稳定运行。

使用 Docker 启动服务

Docker 将应用程序及其依赖打包在一个容器中,启动容器就是启动服务。

启动一个容器

# 语法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 示例: 以后台模式(-d)启动一个 Nginx 容器,并将容器的80端口映射到主机的8080端口
docker run -d -p 8080:80 nginx

查看正在运行的容器

# 语法: docker ps
# 示例:
docker ps

停止一个容器

# 语法: docker stop <容器ID或名称>
# 示例:
docker stop <容器ID或名称>

启动一个已停止的容器

# 语法: docker start <容器ID或名称>
# 示例:
docker start <容器ID或名称>

重启一个容器

# 语法: docker restart <容器ID或名称>
# 示例:
docker restart <容器ID或名称>

总结与关键点

场景 推荐命令 关键点
现代 Linux 服务 systemctl start <name> sudo 权限,status 查看状态,enable 开机自启。
旧版 Linux 服务 service <name> start 功能相对单一,status 查看状态。
Windows 服务 sc start <name>Start-Service -Name <name> 需要管理员权限,服务名通常是英文。
自定义应用 pm2 start, systemd 使用进程管理器保证服务稳定性和高可用性。
Docker 容器 docker run -d <image> -d 后台运行,docker ps 查看,stop/start 管理。

如何找到服务名?

  • Linux: systemctl list-units --type=serviceps aux | grep <程序名>
  • Windows: 打开“服务”管理界面 (services.msc),可以看到所有服务的准确名称。
  • Docker: docker images 查看镜像名。

希望这份详细的指南能帮助你!如果你有更具体的服务类型或操作系统,可以提供更多信息,我可以给出更精确的命令。

分享:
扫描分享到社交APP
上一篇
下一篇