首页 > 其他分享 >代码问题汇总

代码问题汇总

时间:2024-02-07 23:13:47浏览次数:36  
标签:sys 文件 代码 汇总 tmux 问题 session path os

代码问题汇总

不间断运行 Python 文件

nohup

nohup: 是 no hang up 的缩写,在 Linux 系统下启动一个不会随着终端关闭而终止的命令

使用场景:使用远程服务器运行程序,但是网络不稳定,一旦掉线运行就会终止,这时就需要使用 nohup 命令。

# -u: 设置 Python 解释器的缓冲模式为无缓冲(unbuffered),这样可以实时尽快刷新输出缓冲区,方便实时查看输出结果
# > nohup.out:输出重定向
# 2>&1:将标准错误 2 重定向到标准输出 &1,标准输出 &1 再被重定向输入到 nohup.out 文件中
# &:将命令放入后台运行,终端退出后命令仍旧执行
nohup python -u python_file.py > nohup.out 2>&1 &

如果要停止运行,可以使用 ps 命令来查看 PID,然后使用 kill 命令删除:

# a: 显示所有程序
# u: 以用户为主的格式来显示
# x: 显示所有程序,不区分终端机
ps -aux | grep "python_file.py"

# 找到 PID 后,使用 kill 删除
# -9:表示该进程强制终止
kill -9 进程号PID

Tmux

Tmux:是 terminal multiplexer 的缩写,即终端复用器,可以启动一系列终端会话。通过一个终端登录主机并运行 tmux 后,我们可以开启多个控制台而无需浪费多余的终端来连接这台远程主机,而且终端关闭 shell 后里面的任务进程也不会中断。

参考:https://www.ruanyifeng.com/blog/2019/10/tmux.html

使用场景:

  1. 长时间运行任务:在运行需要长时间运行的任务时,例如备份操作、爬虫程序等,Tmux 可以保证即使在网络断开或突然断电的情况下,任务仍然可以在后台运行。
  2. 多人协作:Tmux 允许多个用户同时远程连接到同一会话中,这样就可以协同编辑文件、开发代码等。
# 在终端窗口运行 tmux,启动 tmux 伪窗口
tmux
# 启动命名 tmux
tmux new -s <name>

# 退出
exit or Ctrl + D

# 分离 session
tmux detach or  Ctrl+b d # 退出当前 tmux 窗口,但是 session 和里面的进程仍然在后台运行
# 注意:tmux 有很多快捷键是通过前缀键触发的,一般为 ctrl+b,按下 ctrl+b 后需要松开键盘,然后再按下一个单独的功能键。

# 查看当前所有 session
tmux ls

# 重新进入 session
# 1. 使用 session 编号
tmux attach -t 0
# 2. 使用 session 名称
tmux attach -t <session-name>

# 杀死 session
tmux kill-session -t 0
tmux kill-session -t <session-name>

# 切换 session
tmux switch -t 0
tmux switch -t <session-name>

# 重命名 session
tmux rename-session -t 0 <new-name>

# 划分窗格
# 1. 划分上下两个窗格
tmux split-window
# 2. 划分左右两个窗格
tmux split-window -h
# 3. 关闭当前窗格
Ctrl+b x

最简操作流程如下:

# 1. 新建 session
tmux new -s my_session
# 2. 在 tmux 窗口运行所需程序
# 3. 分离 session
tmux detach
# 4. 下次使用时,重新连接到 session
tmux attach-session -t my_session

Debug 时显示找不到文件

  1. 运行 \(\to\) 打开配置(launch,json)\(\to\) 增加一行:"cwd": "${fileDirname}"
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 当前文件",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,
            "cwd": "${fileDirname}"
        }
    ]
}
  1. debug 前进入代码相应文件夹:
cd code\
  1. 增加代码,解决问题
import os,sys
os.chdir(sys.path[0]) #使用文件所在目录

自动生成项目的依赖清单

生成 requirements.txt 的步骤如下:

  1. 安装 pipreqs 模块
pip install pipreqs
  1. 生成依赖清单:进入 python 项目的根目录,运行如下代码
pipreqs .

# 只列出主要依赖项(而不是包括依赖项的依赖项)
pipreqs . --no-pin

# 覆盖旧的清单文件
pipreqs . --force

这会扫描整个项目目录下的 python 文件,并根据导入信息生成一个名为 requirements.txt 的依赖清单文件,该清单将包括项目所依赖的所有第三方库及其版本号

  1. 安装依赖
pip install -r requirements.txt

生成目录树

  1. 在 Windows 命令行生成指定目录下的文件及其子目录的树形结构
# /F:在输出时包含文件名,而不仅仅是目录
tree /F your_pyfile_path > tree.txt

查找端口的进程信息

  1. Windows 系统:
# netstat:显示有关计算机网络连接和状态的信息
# -a:显示所有连接和侦听端口
# -o:显示与每个连接 / 端口关联的进程的 PID
# -n:使用数字表示 IP 地址和端口号
# findstr:文本查找工具,用于搜索包含特定字符串的行
netstat -aon | findstr “1080”
  1. Linux 系统:
sudo lsof -i :1080

创建 SpringBoot 项目报错

  1. 使用 IDEA 创建 SpringBoot 项目时,报错: "Initialization failed for 'https://start.spring.io",可以将服务器 URL 更换为:https://start.aliyun.com/
  2. 在 IDEA 中找到 Maven 的配置文件的地址,然后检查配置的远程仓库或者镜像有没有问题

image-20230514160056602

  1. 打开用户配置文件:C:\Users\Lockegogo\.m2\settings.xml,配置阿里云仓库:
<!-- 配置阿里云仓库 -->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
  1. 使用脚本删除 Maven 中的 lastUpdated 文件
@echo off

rem 这里写你的仓库路径
set REPOSITORY_PATH=C:\Users\Lockegogo\.m2\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
rem 搜索完毕
pause
  1. 如果依赖还是报错,继续尝试:
    1. pom.xml 中的对应的依赖先删除,然后刷新右侧,之后再把依赖粘贴到 pom.xml 中,再次刷新
    2. 从本地仓库中将对应的包删除掉,然后让 maven 重新下载

Github Copilot 无法连接

  1. 方法一

    1. 打开猫
    2. Pycharm 文件 \(\to\) 设置 \(\to\) 外观与行为 \(\to\) 系统设置 \(\to\) HTTP 代理
    3. 选手动代理配置,勾选 HTTP,主机名填 127.0.0.1,端口号填 7890(猫的端口号),点击确定
    4. 重启 pycharm,之后可以正常登录 copilot
  2. 方法二

    1. 打开猫
    2. 将代理端口改成与猫一样
    set http_proxy=http://127.0.0.1:7890
    set https_proxy=http://127.0.0.1:7890
    # 若要重置
    set http_proxy=
    
    1. 以 vscode 为例:文件 \(\to\) 首选项 \(\to\) 设置 \(\to\) 搜索 proxy,找到 http.proxy,将其值改为 http://127.0.0.1:7890

使用 scp 上传文件

注意:要以绝对路径写清楚本地文件的位置

 # 从服务器上下载文件
 scp username@servername:/path/filename /tmp/local_destination

 # 上传本地文件到服务器
 scp /path/local_filename username@servername:/path

 # 从服务器下载整个目录
 scp -r username@servername:remote_dir/ /tmp/local_dir

 # 上传目录到服务器
 scp  -r /tmp/local_dir username@servername:remote_dir

 # 查看机器的用户名和 ip
 query user
 ifconfig

Android Studio 项目 sync 不成功

  1. 严格按照各版本配置:ndk 和 jdk
  2. ~/.bashrc 中配置环境变量,路径可以在 AS 中直接查看
export NDK=/home/lockegogo/Android/Sdk/ndk/21.4.7075529
export PATH=$NDK:$PATH

#JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
JAVA_HOME=/home/lockegogo/.jdks/corretto-11.0.20
#JAVA_HOME=/home/lockegogo/.jdks/corretto-1.8.0_382
CLASSPATH=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
  1. local.properties 文件中增加 ndk 路径
sdk.dir=/home/lockegogo/Android/Sdk
ndk.dir=/home/lockegogo/Android/Sdk/ndk/21.4.7075529
  1. 选择 Gradle JDK 版本:corretto-11

img

  1. 玄学步骤:https://segmentfault.com/q/1010000043160587
    1. 先按教程改
    2. 报错之后再该回来,就成功了
    3. 直接 File -> Invilidate caches 也可以达到不报错的目的

Vscode 导入包时显示找不到对应的模块

方法一:在文件开头导入项目根目录:

import sys
import os
# 获取当前脚本文件所在的目录路径
current_dir = os.getcwd()
# 获取项目根目录路径,根据实际情况调整级别
project_root = os.path.abspath(os.path.join(current_dir, "..", ".."))
# 将项目根目录添加到模块搜索路径中
if project_root not in sys.path:
    sys.path.append(project_root)

# 检查模块搜索路径是否正确
print(sys.path)

方法二:将当前脚本所在的目录路径添加到 sys.path 列表中,以便 Python 解释器能够在该目录下查找和导入模块

import sys
import os
sys.path.append(os.path.dirname(__file__))
print(sys.path)

Vscode 加载 web 视图时出错

  1. 关闭 vscode
  2. 在 cmd 中输入:code --no-sandbox

在开发环境中不能进入 conda

# 先运行
source activate
# 然后再进入对应的环境
conda activate env

将 conda 虚拟环境 env 加入 jupyter kernel

source activate
conda create  -n tf-sms python==3.7.13
conda activate tf-sms

# 安装 tensorflow
conda insatll pip
pip install tensorflow==2.8.0
# 测试 tensorflow 是否正常安装
python -c "import tensorflow as tf; print(tf.__version__)"
# 安装其他依赖
pip install -r requirements.txt

# 安装 ipykernel
conda install ipykernel
python -m ipykernel install --user --name=env_name

# 刷新 jupyter 界面,在界面的右上角就可以选择新的 kernel 了

# 如果需要删除该 kernel
jupyter kernelspec list
jupyter kernelspec uninstall env_name

ndroid studio 中 的 gradle 不显示 build

解决方案

  1. File -> Setting -> Experimental,将 Gradle 下的 Configure all Gradle ... 勾选4
  2. File -> Sync Project with Gradle FIles

将 apk 文件安装到安卓手机上

方法 1:如果失败的话尝试方法 2

adb install samples-debug-7.25.apk

方法 2:

adb push wear.apk /sdcard/wear.apk

将项目的根目录加入 path

为了增强代码的鲁棒性,最好将项目的根目录加入 path,方法如下:

import sys
import os

# 获取当前脚本所在目录
project_root = os.path.dirname(os.path.abspath(__file__))
# 将项目根目录添加到 sys.path
sys.path.insert(0, project_root)

Keras 画模型的输入输出图

import pydot
from keras.utils.vis_utils import plot_model

model = load_model("model.h5")
plot_model(
    model.model,
    to_file=os.path.join("model", model_name, "model.png"),
    show_shapes=True,
    show_layer_names=True,
)

标签:sys,文件,代码,汇总,tmux,问题,session,path,os
From: https://www.cnblogs.com/lockegogo/p/18011437

相关文章

  • PAT乙级-1008(数组元素循环右移问题)
    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯A**N−1)变换为(A**N−M⋯A**N−1A0A1⋯A**N−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包......
  • 串口收发浮点数加示例代码(共用体)
    #include"stdio.h"#include"string.h"unionData{charstr[4];//float占用4个字节所以给四个字符floatnum;};intmain(){unionDatasend_data,receive_data;send_data.num=43.43;//通过串口发送43.43,只需要放入共用体里面,然后通过发送四个char数据,下面是......
  • 代码随想录 day43 最后一块石头的重量 II 目标和 一和零
    最后一块石头的重量II递推式和结果处理结果的意思是sum-target和target这两堆石头相撞目标和第一次见被薄纱这是组合类的dp递推一和零注意循环嵌套位置!这里是str外循环表示遍历物品里面的两层ij循环表示遍历背包容量这里是一个二维容量的背包......
  • 如何利用内核跟踪点排查短时进程问题?
    在排查系统CPU使用率高的问题时,很可能遇到过这样的困惑:明明通过 top 命令发现系统的CPU使用率(特别是用户CPU使用率)特别高,但通过 ps、pidstat 等工具都找不出CPU使用率高的进程。这是什么原因导致的呢?一般情况下,这类问题很可能是以下两个原因导致的:第一,应用程序里面......
  • 代码随想录算法训练营第十五天| 层序遍历 10 226.翻转二叉树 101.对称二叉树 2
    层序遍历  102.二叉树的层序遍历-力扣(LeetCode)思路:结合了昨天学到的标记法,每当一层遍历完,向队列中添加一个NULL标记。遍历到NULL节点表示该层遍历完了,将结果存入结果集中。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNo......
  • Harmomy【问题系列篇】- ohpm : 无法将“ohpm”项识别为 cmdlet、函数、脚本文件或可
    ohpm:无法将“ohpm”项识别为cmdlet、函数、脚本文件或可运行程序的名称。造成该问题原因跟是:没有配置好ohpm的环境变量。问题1:配置环境变量左上角File->Settings,找到Ohpm放的路径配置环境变量重启DevEco,在Terminal输入ohpm-v,查看版本号结语希望本文章对遭遇同样问题......
  • 随笔汇总
    一、Go语言精进之路读书笔记系列第三部分声明、类型、语句与控制结构1.Go语言精进之路读书笔记第8条——使用一致的变量声明形式2.Go语言精进之路读书笔记第9条——使用无类型常量简化代码3.Go语言精进之路读书笔记第10条——使用iota实现枚举常量4.Go语言精进之路读书......
  • Go语言精进之路读书笔记第18条——理解Go语言代码块与作用域
    18.1Go代码块与作用域简介Go规范定义了如下几种隐式代码块。宇宙代(Universe)码块:所有Go源码都在该隐式代码块中,就相当于所有Go代码等最外层都存在一对大括号。包代码块:每个包都有一个包代码块,其中放置着该包都所有Go源码文件夹代码块:每个文件都有一个文件代码块,其中包含着该......
  • Unity接入 KimiChat 代码示例
    代码usingSystem.Runtime.CompilerServices;usingSystem.Threading.Tasks;usingUnityEngine;usingUnityEngine.Networking;publicclassTestKimi:MonoBehaviour{privatestringapiKey="YourKey";//替换为你的API密钥privatestringapiUrl=......
  • SPI多个从设备问题排查
    记SPI问题排查 SPI电路挂载了2个从设备,S1和S2,其中S2前加了一个隔离器g,电路结构如下图:  问题发现:其它同事已经开发了S2驱动,我在开发S1驱动时发现S1无响应。 排查是软件问题还是硬件问题:检查代码SPI初始化(时钟等)片选信号的处理(多从设备做冲突处理)没有问题后S1还是无......