后台进程和服务
后台进程
For Linux /Mac
# 在后台运行命令,并将输出重定向到文件:
nohup /root/tes.sh > output.log &
# 在后台运行命令,并将输出和错误信息都重定向到文件:
nohup /root/tes.sh > output.log 2>&1 &
For windows
start /b c:\tetst.sh
在window powershell 7 中 可使用 Start-Process
启动一个后台进程
Start-Process -FilePath "C:\path\test.sh" -ArgumentList "arg1", "arg2" -WindowStyle Hidden
- -FilePath 可选路径和文件名
- -ArgumentList 传参
- -WindowStyle 窗口的状态。 默认值为 Normal。 [Normal,Hidden,Minimized,Maximized]
- -WorkingDirectory 进程启动目录
- -RedirectStandardOutput 输入路径和文件名。 默认情况下,在控制台中显示该输出。
- -RedirectStandardInput 输入输入文件的路径和文件名。 默认情况下,进程从键盘获取其输入。
- -RedirectStandardError 出错信息的路径和文件名
- -Environment 指定虚拟环境
- -Confirm 是否确认
- -Credential 凭证
- -Verb RunAs 以管理员身份运行
更多: PowerShell
系统服务
For Linux
创建一个.service文件来描述你的服务。这个文件通常位于/etc/systemd/system/目录下。
内容可能如下所示:
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=bash test.sh
Restart=always
User=yourusername
Group=yourgroupname
Environment=PATH=/usr/bin:/usr/local/bin
EnvironmentFile=-/etc/sysconfig/myservice
WorkingDirectory=/path/to/your
[Install]
WantedBy=multi-user.target
重新加载systemd配置:
在创建了新的.service文件之后,你需要告诉systemd重新加载配置:
sudo systemctl daemon-reload
启动并检查服务状态:
现在,你可以启动你的服务,并检查它的状态:
sudo systemctl start myservice
sudo systemctl status myservice
设置服务开机自启:
如果你想让你的服务在系统启动时自动运行,你可以使用enable命令:
sudo systemctl enable myservice
管理服务的其他命令:
停止服务:sudo systemctl stop myservice 重启服务:sudo systemctl restart myservice 查看服务是否开机自启:sudo systemctl is-enabled myservice 查看所有服务:sudo systemctl list-units --type=service
For windows
SC
# 新建一个服务
sc create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= "+TDI NetBIOS"
# 删除服务
sc delete newserv
sc 已经不再更新 : 相关文档
New-Service
New-Service
基于 PowerShell 7
新建一个名为TestService 服务
New-Service -Name "TestService" -BinaryPathName 'C:\WINDOWS\System32\svchost.exe -k netsvcs'
参数
- -Name 指定服务的名称。 此参数是必需的。
- -BinaryPathName 指定服务的可执行文件的路径。 此参数是必需的。
- -Confirm 提示你在运行 cmdlet 之前进行确认。
- -DependsOn 指定新服务所依赖的其他服务的名称。 若要输入多个服务名称,请使用逗号分隔这些名称。
- -Description 指定服务的描述。
- -DisplayName 指定服务的显示名称。
- -SecurityDescriptorSddl 以 Sddl 格式指定服务的 SecurityDescriptor。
- -StartupType 设置服务的启动类型 (AutomaticDelayedStart , 系统启动后不久启动)
可以使用变量:
$params = @{
Name = "TestService"
BinaryPathName = 'C:\WINDOWS\System32\svchost.exe -k netsvcs'
DependsOn = "NetLogon"
DisplayName = "Test Service"
StartupType = "Manual"
Description = "This is a test service."
}
New-Service @params
不支持 启动目录.
相关文档: 更多文档