Linux与Anaconda环境部署与管理(运维交接)
文章目录
- 一、前言
- 二、Linux基础命令
- 三、进程管理与监控
- 四、后台任务与服务管理
- 五、Anaconda环境管理
- 六、JAR包的运行与管理
- 七、网络与端口映射
- 八、安全与权限管理
- 九、故障排查与日志分析
- 十、附录
一、前言
本文将详细介绍Linux系统下的常用命令以及Anaconda环境管理,包括服务部署、进程管理、环境配置等核心操作。
二、Linux基础命令
文件与目录管理
ls # 列出目录内容
ls -la # 列出所有文件(包括隐藏文件)的详细信息
cd <目录名> # 切换目录
mkdir <目录名> # 创建新目录
pwd # 显示当前工作目录路径
cp <源文件> <目标文件> # 复制文件
mv <源文件> <目标文件> # 移动或重命名文件
rm <文件名> # 删除文件
rm -r <目录名> # 递归删除目录及其内容
touch <文件名> # 创建空文件或更新文件时间戳
文件内容查看
cat <文件名> # 查看文件内容
less <文件名> # 分页查看文件内容
head -n <行数> <文件名> # 查看文件头部内容
tail -n <行数> <文件名> # 查看文件尾部内容
tail -f <文件名> # 实时监控文件末尾(常用于日志查看)
grep <关键词> <文件名> # 在文件中搜索关键词
文件权限管理
chmod <权限> <文件名> # 修改文件权限
chown <用户>:<组> <文件名> # 修改文件所有者
了解即可,实际开发中使用Xshell等工具
三、进程管理与监控
查看进程
ps aux # 显示所有进程
ps -ef | grep <关键词> # 查找特定进程
top # 实时显示系统进程状态
查看端口使用情况
lsof -i :<端口号> # 查看指定端口的占用情况
netstat -tulpn # 显示所有监听端口
netstat -tulpn | grep <端口号> # 查找特定端口
ss -tulpn # 显示所有监听端口(更新的命令)
例如,查看12345端口的占用情况:
lsof -i :12345
输出内容通常包括进程ID(PID)、进程名称、用户名等信息。
终止进程
kill <PID> # 正常终止进程
kill -9 <PID> # 强制终止进程
pkill <进程名> # 根据进程名终止进程
killall <进程名> # 终止所有同名进程
例如,如果要终止进程ID为1234的进程:
kill -9 1234
四、后台任务与服务管理
后台运行程序
command & # 在后台运行命令
nohup command & # 在后台运行命令,并忽略挂起信号(即使终端关闭也能继续运行)
后台任务管理
jobs # 列出当前终端的后台任务
bg %<任务号> # 将任务放到后台运行
fg %<任务号> # 将后台任务调到前台
后台挂载与日志重定向
使用nohup
命令可以让程序在后台运行,即使终端关闭也不会影响程序执行:
nohup python3 script.py > output.log 2>&1 &
这个命令的各部分含义:
nohup
: 忽略挂起信号,使命令在终端关闭时继续运行python3 script.py
: 要执行的命令> output.log
: 将标准输出重定向到日志文件2>&1
: 将标准错误也重定向到同一个日志文件&
: 在后台运行
实际应用示例:
cd test/
nohup python3 /usr/local/test.py > test.log 2>&1 &
路径说明:
- 如果命令中使用了绝对路径(如
/usr/local/test.py
),则无论当前工作目录在哪里,都会执行指定的绝对路径文件 - 如果使用相对路径(如
./test.py
),则会在当前工作目录下查找文件
要监控日志文件的实时更新,可以使用:
tail -f test.log
开机自启动配置
在Linux系统中,有多种方法实现程序开机自启动:
使用systemd服务(推荐,这一步可能遇到非常多的报错,结合gpt和网上教程实际解决即可)
- 创建服务配置文件:
sudo vi /etc/systemd/system/myservice.service
- 编辑服务文件内容:
[Unit]
Description=My Python Service
After=network.target[Service]
User=username
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/python3 /path/to/app/script.py
Restart=always
RestartSec=10[Install]
WantedBy=multi-user.target
然后点Esc后输入:wq(写入退出)即可,不写入退出是q!
- 启用服务:
sudo systemctl enable myservice
sudo systemctl start myservice
五、Anaconda环境管理
Anaconda是一个开源的Python发行版,专注于简化包管理和部署。它非常适合用于科学计算和数据分析任务。
安装Anaconda
- 下载Anaconda安装包:
wget有时不太好使,然后可以下载完,用Xftp上传
官网地址:https://www.anaconda.com/download/success
然后再按网上的教程安装即可。
- 执行:
nohup jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root > jupyter.log 2>&1 &
创建环境
conda create -n myenv python=3.9
这将创建一个名为myenv
的环境,并安装Python 3.9版本。
激活环境
conda activate myenv
查看环境列表
conda env list
或
conda info --envs
安装包
conda install numpy pandas matplotlib
安装requirements.txt
pip install -r requirements.txt
删除环境
conda remove --name myenv --all
环境变量配置
有时当当前用户权限不足时,需要指定临时目录,启动app.py时,容易权限不足:
export GRADIO_TEMP_DIR=$(pwd)/temp
这将设置GRADIO_TEMP_DIR环境变量为当前目录下的temp文件夹。
六、JAR包的运行与管理
后台运行JAR包
nohup java -jar your-application.jar > app.log 2>&1 &
最好还是按照以上设置开机自启动,及编写对应启动和关闭的脚本。
同时部署的内容,地址、启动关闭步骤,要在内网下同步管理起来,方便其他人使用。
七、网络与端口映射
端口映射是将内部网络的服务映射到外部网络的过程,使外部网络可以访问内部服务。
当数据库处于受端口映射中时,不能直接访问,需要通过中间层(如SSH隧道)进行连接。
八、安全与权限管理
用户权限管理
sudo useradd -m username # 创建新用户
sudo passwd username # 设置用户密码
sudo usermod -aG sudo username # 将用户添加到sudo组
sudo -u username command # 以指定用户身份执行命令
文件权限
文件权限由三组权限组成(所有者、用户组和其他人),每组有三种权限(读、写、执行):
chmod 755 file # 设置权限为 rwxr-xr-x
chmod u+x file # 给所有者添加执行权限
chmod g-w file # 从用户组移除写权限
chmod o=r file # 设置其他人只有读权限
sudo与权限提升
当需要执行需要高级权限的命令时:
sudo command # 使用sudo执行命令
sudo -i # 切换到root用户环境
具体可以看这一篇博客:Linux 权限体系详解:777、755、644、600、chmod、chown、chgrp 和 umask;SUID、SGID 和 Sticky Bit;ACL (访问控制列表) 是什么?
九、故障排查与日志分析
常见问题排查思路
- 检查服务状态:
systemctl status service-name
- 查看日志文件:
journalctl -u service-name
tail -f /var/log/application.log
- 检查磁盘空间:
df -h
du -sh /path/to/directory
- 检查内存使用:
free -h
- 检查CPU使用:
top
htop
日志分析工具
grep
: 搜索关键词
grep "ERROR" logfile.log
awk
: 复杂日志解析
awk '{print $1,$4}' logfile.log
sed
: 文本替换和处理
sed 's/ERROR/CRITICAL/g' logfile.log
十、附录
除了我的博客外,以下是我收藏的,
部署程序可以用宝塔面板。
其他不错的安装教程博客:
- CentOS7安装MySQL8(亲测无坑百分百安装成功)
- 【centos8.0】安装rabbitMQ史上最全教程
- 【Redis】基于 CentOS 7.9 的详细安装教程
- AJ-Report 初学(入门教程)
其中AJ-Reprot部署发行版即可,在Linux部署只需准备好使用环境和改配置文件即可。