参考文档:
Linux命令之nohup详解 - 掘金
【Linux】ps -ef|grep详解-CSDN博客
有个简单想法,我的一些文件放在机器某个目录下面,可以简单提供团队内部人员浏览和下载功能,节约时间,用最简单方法实现。
注:这个方式并不安全稳定,只适合在内部测试环境运行使用。
先看看最后效果图:
1.启动文件服务器
先在终端运行如下命令就可以实现(服务器上已经安装了python3):
# 切到想要分享的目录下面
cd target_path
# 挂起运行文件服务器,服务器端口号为8000
nohup python3 -m http.server 8000 &
解释一下上面指令:
python3 -m http.server
用于启动一个基本的 HTTP 服务器,用于在开发环境中快速共享文件。这个命令通常用于本地开发和调试,不适合在生产环境中使用。
nohup Command [Arg...] [ &]
指令名称源于“no hang up”的缩写,可以忽略挂断信号的情况下运行某一条指令。这允许命令在用户注销(log out)或者有其他挂断连接的行为发生之后继续运行。总之,我们用 nohup 指令去启动http服务器,保证在shell关闭后文件服务还能正常运转。
nohup Command [Arg...] [ &]
最后的" &":表示后台运行,不霸占交互命令行
2.关闭文件服务进程
# 查找当前文件服务进程pid
ps -ef |grep python3
# 关闭服务
kill pid
如下图,第2列为进程的pid
3.开机自启
每次重启服务器,这个文件服务的进程会被关闭,还需要再次操作,比较麻烦。我们这里使用systemd配置来实现开启自启服务器的功能。
1.创建一个shell脚本
我们将配置启动时运行这个脚本,来启动文件服务。我这里命名为 share_files.sh。
这里将脚本放在/usr/local/bin目录下。
#!/bin/bash
cd /usr/apk
#echo "Starting HTTP server" >> /var/log/http_server.log
# 这里nohup将command的标准输出重定向到http_server.log
nohup /usr/bin/python3 -m http.server 8000 > /var/log/http_server.log 2>&1 &
给脚本加上可执行权限:
chomd +x share_files.sh
2.创建一个service unit文件
这个文件来对自启动服务进行配置
例如share_files.service,并将其放置在/etc/systemd/system/目录下。
[Unit]
Description=my share files shell script
After=multi-user.target[Service]
Type=forking
WorkingDirectory=/usr/apk
ExecStart=/usr/local/bin/share_files.sh[Install]
WantedBy=multi-user.target
3.启用服务
使用systemctl enable命令来在系统启动时自动启用这个service unit文件。
systemctl enable share_files.service
配置好之后,可以重启服务器试试看有没有生效。
4.服务其他配置
可以使用systemctl命令来启动和管理这个service unit文件。
# 启动服务
systemctl start share_files.service# 停止服务
systemctl stop share_files.service# 重启服务
systemctl restart share_files.service# 查看服务状态
systemctl status share_files.service