文章目錄
- 一、前言
- 二、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部署只需準備好使用環境和改配置文件即可。