当前位置: 首页 > news >正文

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和网上教程实际解决即可)

  1. 创建服务配置文件:
sudo vi /etc/systemd/system/myservice.service
  1. 编辑服务文件内容:
[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!

  1. 启用服务:
sudo systemctl enable myservice
sudo systemctl start myservice

五、Anaconda环境管理

Anaconda是一个开源的Python发行版,专注于简化包管理和部署。它非常适合用于科学计算和数据分析任务。

安装Anaconda

  1. 下载Anaconda安装包:

wget有时不太好使,然后可以下载完,用Xftp上传
官网地址:https://www.anaconda.com/download/success
然后再按网上的教程安装即可。

  1. 执行:
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 (访问控制列表) 是什么?


九、故障排查与日志分析

常见问题排查思路

  1. 检查服务状态:
systemctl status service-name
  1. 查看日志文件:
journalctl -u service-name
tail -f /var/log/application.log
  1. 检查磁盘空间:
df -h
du -sh /path/to/directory
  1. 检查内存使用:
free -h
  1. 检查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部署只需准备好使用环境和改配置文件即可。

相关文章:

  • Windows 同步-Windows 单向链表和互锁链表
  • OpenCV物体计数示例
  • docker本地虚拟机配置
  • 课外知识:isinstance()与issubclass()的区别
  • Filename too long 错误
  • 《TCP/IP详解 卷1:协议》之第四、五章:ARP RARP
  • C#使用sftp远程拷贝文件
  • 黑马点评redis改 part 4
  • 开源的自动驾驶模拟器
  • C++ 的 IO 流
  • DAPP(去中心化应用程序)开发全解析:构建去中心化应用的流程
  • SVT-AV1编码器初始化函数
  • 力扣刷题Day 25:反转链表(206)
  • 【android bluetooth 协议分析 11】【AVDTP详解 1】【宏观感受一下avdtp是个啥东东】
  • 入住刚装修好的新房,房间隔音太差应该怎么办?
  • ERP系统多少钱一套?| 上海达策TECH-SONIC
  • 三维几何变换
  • 修改element UI 分页组件样式(解决样式不生效问题)
  • Java多线程编程初阶指南
  • 【实战】oninput 文本框输入实时查询防抖机制实现
  • 龚正会见巴西里约热内卢州州长克劳迪奥·卡斯特罗
  • 民生访谈|电动自行车换新补贴会优化吗?今年汛期情况如何?市应急局回应
  • 62岁中国国际商会副会长、康力电梯创始人王友林逝世
  • 中汽协发布规范驾驶辅助宣传与应用倡议书
  • A股低开高走,震荡收涨:两市成交10414亿元,4360股收涨
  • 龙登高谈近世的基层治理及制度变迁