Linux运行程序

一、简介

​ 在许多要运行的程序中,往往执行./程序名字就直接运行,但是会占用终端导致别的操作十分不便,可以试用以下的方法将程序放到后台运行。

二、操作

1.在命令末尾加上 & 符号:

#这会将`command`在后台运行,并且不会占用你的终端。
command &

2. 使用 nohup 命令:

#`nohup`命令可以让程序在后台运行,并且会将输出重定向到当前文件夹下的`nohup.out`文件。这样即使你退出终端,程序也会继续运行。
nohup command &
#扩展*
nohup command > /dev/null  2>&1 &
#nohup:不间断在后台运行一个程序。
#&:为后台运行
#2>&1:将错误重定向到标准输出上��出上

3. 使用 disown 命令:

首先,运行命令并将其放入后台(使用&),然后使用 disown 命令将它从shell的作业表中移除,使其不再受到终端会话的控制:

command &
disown

4. 使用 screen 命令:

screen 是一个终端多路复用器,它可以创建多个终端会话,并且允许你在后台运行程序。

screen
# 在新的终端窗口中运行你的程序
#按下 `Ctrl + A` 然后 `D` 来将`screen`会话放入后台。可以使用`screen -r`来重新连接到之前的`screen`会话。

5. 使用 tmux 命令:

tmux 是另一个终端多路复用器,类似于screen,它允许你创建多个终端窗口并在后台运行程序。

bashCopy codetmux
#在新的终端窗口中运行你的程序
#按下 `Ctrl + B` 然后 `D` 来将`tmux` 会话放入后台。可以使用 `tmux attach` 命令来重新连接到之前的`tmux`会话。

6. 使用 systemd 服务:

创建一个systemd服务单元文件,使你的程序在系统启动时作为服务后台运行。创建一个 .service 文件,然后将其放在/etc/systemd/system/目录下,内容类似于:

[Unit]
Description=Description of your service		#服务的描述,用于描述服务的作用。
Documentation=Additional documentation about your service	#可选项,提供有关服务的附加文档。
After=network.target     # Dependencies, if any		#指定服务的启动顺序依赖关系

[Service]
ExecStart=/path/to/your/command  #指定要运行的命令或脚本的路径。
WorkingDirectory=/path/to/your/working/directory  #指定要运行的命令或脚本的路径。
User=nobody            #指定服务运行的用户和用户组。
Group=nogroup
Restart=always          #指定服务何时应该被重启。常用的选项包括 always、on-failure 等。
Environment=KEY=value  #可选项,允许你设置环境变量。

[Install]
WantedBy=multi-user.target  #指定服务应该在哪些target(例如 multi-user.target)中启动。

启用并启动这个服务:

systemctl enable your-service-name.service
systemctl start your-service-name.service