Ubuntu常见问题整理

1.source activate tensofrlow, 激活anaconda环境时报错

-bash: activate: No such file or directory
解决方案
export PATH="~/anaconda3/bin:$PATH"
再source ~/.bashrc
source activate tensofrlow 即可以了。

2.解压tar.gz包:

tar -zxvf example-1.2.3-1.tar.gz
解压tar包
tar -xvf your_archive.tar
解压一个路径下的全部tar包
find /path/to/folder -name "*.tar" -exec tar xvf {} ;

2.1 tar 压缩文件

1.压缩当前目录下文件夹/文件test到test.tar.gz:
tar -zcvf test.tar.gz test

3.ubuntu 挂载移动硬盘/U盘

1.查看优盘信息

sudo fdisk -l

2.挂载,其中/dev/sdb1是根据上面的命令查看得到的硬盘信息,可能会不一样,/home/user/media为想要的挂载的位置,如没有此文件夹,需要新建。

sudo mount  /dev/sdb1 /home/user/media

3.卸载

sudo umount /home/user/media/

4.git命令安装

出现bash: git: command not found错误时,需要安装git命令
方法为
apt-get update -y
apt-get upgrade -y

apt install git

5.apt换源

  • 打开sources.list文件
    sudo gedit /etc/apt/sources.list

  • 编辑/etc/apt/sources.list文件, 在文件最前面添加阿里云镜像源:
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

  • sudo apt-get update
    不要upgrade 容易崩

6.pip换源

apt换源后使用apt-get install安装会很快,但是pip还是很慢。
vim ~/.pip/pip.conf
中添加

[global]
index-url =https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

可能出现无法保存的问题,需要先创建文件
mkdir ~/.pip

7.docker内sudo命令不能用

apt-get update
apt-get install sudo 

8.在jetson nano上安装scikit-image报错

image.png

问题为编码错误,解决方法

vim ~/.bashrc

export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8

source ~/.bashrc
重新pip即可。

9.pytorch torchvision model无法下载。报如下错误。

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)
image.png

Python 2.7.9 之后版本引入了一个新特性:当你urllib.urlopen一个 https 的时候会验证一次 SSL 证书 ,当目标使用的是自签名的证书时就会爆出该错误消息。

解决办法
在在脚本中,全局添加如下代码:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

10opencv安装

解决no module named cv2问题

python3 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
python2 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
在docker中安装可能出现错误,先

apt-get update
进行更新,然后根据缺的东西进行安装,
apt-get install libglib2.0-0
apt-get install libsm6
apt-get install libxrender1
apt-get install libxext-dev
apt install libgl1-mesa-glx

11. .whl文件安装

当使用pip安装某个包由于网络无法安装时,可以先使用wget将whl文件下载下来,再使用安装pip install *.whl

12. python numpy 大数组显示不全,解决方案

import numpy as np
np.set_printoptions(threshold=np.inf)

Dockerfile安装docker

(1) 查看目录下Dockerfile是否存在
[root@docker ~]#cd /Dockerfile/
[root@docker Dockerfile]#ls
Dockerfile

(2) 执行命令进行构建
[root@docker Dockerfile]#docker build -t nginx_image .
上条命令中build为构建镜像,而参数t则指定镜像name,.则为Dockerfile的路径
下图可以看到构建成功

13. 后台执行程序

nohup 命令 后面加上&


image.png

13.查看文件夹内文件数

统计当前目录下文件的个数(不包括目录)
ls -l|grep "^-"| wc -l
统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
查看某目录下文件夹(目录)的个数(包括子目录)
$ ls -lR | grep "^d" | wc -l
查看一个路径下全部子文件夹的文件数
find ./ -type f | wc -l

14.服务器文件传输

将本机文件传至目标机器路径下,inspur为用户名
scp /home/zhaobing/coco2017.txt inspur@10.51.24.20:/home/inspur/

15.文件压缩为zip

将/home/wwwroot/xahot/ 这个目录下所有文件和文件夹打包为当前目录下的xahot.zip

zip -q -r xahot.zip /home/wwwroot/xahot

16.查看一级子目录存储空间大小

sudo ls | xargs sudo du -ksh
查看各磁盘空间占用情况
df -h
查看当前文件夹下所有文件大小(包括子文件夹)

du -h

du -sh <目录>命令来查看指定目录的大小
du -sh
查看某个特定文件或目录占用了多少磁盘空间,可以使用ls -lh <文件/目录>
ls -lh

17. 把文件解压到指定的目录下,需要用到-d参数。

unzip -d /temp test.zip

18 detectron2 coco 1x 2x schedule 训练策略

  • 1x 策略表示:在总batch size为16时,初始学习率为0.02,在6万轮和8万轮后学习率分别下降10倍,最终训练9万轮。

  • 2x 策略为1x策略的两倍,同时学习率调整位置也为1x的两倍

19.python版本过低导致pip包无法安装

pip install blobfile==1.05出现问题
是因为python版本过低,换一个docker内python版本高于3.7的即可
ERROR: Package 'blobfile' requires a different Python: 3.6.10 not in '>=3.7.0'

20. pip install git+https:XXX 网络原因安装失败

直接使用网址进行pip install 可能因为网络无法顺利安装
1.先要git clone 或者直接网页下载解压,下载好原文件(这时候文件夹里往往有一个setup.py文件,但是有些时候并不能简单的python setup.py)

2.在下载的文件夹下执行 :python setup.py sdist

3.然后会多出一个dist的文件夹,打开文件夹便可以看到一个打包好的你需要安装的项目xxx.tar.gz

4.然后再 pip install xxx.tar.gz ,到此安装完成

21. jupyter 安装及常见问题

pip install jupyter
使用过程中如果出现如下问题
TypeError: should_run_async() got an unexpected keyword argument ‘transformed_cell’
TypeError: required field “type_ignores” missing from Module
解决第一个问题:

pip install "ipykernel<5.5.2"

解决第二个问题:

pip install --upgrade ipython

22 多个项目 from import 问题

多个项目间引用时,容易出现import不到的问题,如果路径关系比较简单,可以用相对路径,如果比较复杂,可以用绝对路径解决。
在想引用其他文件的脚本加入如下语句

import sys
import os
ROOT_DIR = os.path.abspath('/workspace/latent-diffusion')
root_dir2=os.path.abspath('/workspace/latent-diffusion/tamingtransformerstry')
sys.path.append(ROOT_DIR)
sys.path.append(root_dir2)

ldm是ROOT_DIR或者root_dir2所在路径即可
from ldm.util import instantiate_from_config

23.Aistation上传docker无法使用,在shell里面添加如下信息。

export PATH=/usr/local/nvm/versions/node/v16.6.1/bin:/opt/conda/bin:/opt/cmake-3.19.3-Linux-$(uname -m)/bin/:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin:/opt/tensorrt/bin:$PATH

24.AIstation无法使用jupyter

  1. docker需要先安装juyter lab
    直接pip install 或者下载whl离线安装

mkdir /etc/jupyter/ && wget -P /etc/jupyter/ https://raw.githubusercontent.com/Winowang/jupyter_gpu/master/jupyter_notebook_config.py

wget -P /etc/jupyter/ https://raw.githubusercontent.com/Winowang/jupyter_gpu/master/custom.js
操作后路径下有上面两个文件

20c83baa946c90f69c6bf6cfad88854.png

4.确定jupyter路径,进行软连接到/usr/local/bin
目前jupyter-lab路径为/opt/conda/bin/jupyter-lab 软连接到/usr/local/bin

ln -s /opt/conda/bin/jupyter-lab  /usr/local/bin

保存镜像,重新开启即可


cbbea5f863bf275cf9f07b8e296b135.png

25 latex 图表居中,修改整个表格字体大小

\begin{table*}[htbp]
\centering
\scriptsize

字体由小到大
\tiny
\scriptsize
\footnotesize
\small
\normalsize
\large
\Large
\LARGE
\huge
\Huge

26 latex伪代码

使用algorithm写伪代码时,需要使用下面两个包

\usepackage{algorithm}
\usepackage{algorithmic}

27 清华源装包

pip install labelme==5.0.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/

28 统计文件夹下个数

统计当前目录下文件的个数(不包括目录)
ls -l | grep "^-" | wc -l
统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l

29 screen用法

screen可以在机器断开连接的情况下后台跑任务
安装 apt-get install screen
新建会话 screen -S 会话名字
查看开启的会话 screen -ls
进入名为name的窗口
screen -r name
退出会话 ctrl+A+D
关闭会话 screen -S 进程号 -X quit
再次进入退出的会话 screen -r 进程号(或者会话名)

30.pytorch指定gpu卡号

CUDA_VISIBLE_DEVICES=1 python main.py

31 读取文件夹文件名

可用方法包括os.walk/ os.listdir()/os.scandir
在python3中推荐使用os.scandir,速度相对前两个快很多倍。
示例代码

for i in tqdm(os.scandir(path), disable=False):
  images.append(os.path.join(path, i))

32.tqdm用法
在迭代器前面加上tqdm,可以输出此迭代所需要的时间,对于代码调试分析,查看运行时间有帮助

from tqdm import tqdm
for i in tqdm(os.scandir(path), disable=False):
for i in tqdm(range(len(txts))):
for epoch in tqdm(range(1, args.epochs + 1)):

33.两个list取交集、并集
交集(公共部分)

list(set(listA).intersection(set(listB)))

当数据量较大时要比

retA = [i for i in listA if i in listB]

快很多,大数据集不建议使用第二种方法
并集

list(set(listA).union(set(listB)))

求差集,在B中但不在A中

retD = list(set(listB).difference(set(listA)))

34.tar.gz包安装

使用 cd 命令导航到安装包所在的目录

对于 tar.gz ,使用 tar xvzf 安装包名称.tar.gz 命令解压
对于 tar.bz2 ,使用 tar xvjf 安装包名称.tar.bz2 命令解压

如果解压出的文件夹中有 \bin\脚本名称.sh 文件,则使用 cd命令导航到 bin 文件夹,然后使用 sudo bash 脚本名称.sh 命令即可安装。

若没有相应的 shell 文件,则使用下列命令安装。

./configure
make
sudo make install

35.获得路径下的所有子目录,构成一个list(不包括子目录里面的文件名)

from glob import glob
img_subfile=glob(img_path + "/*/", recursive = True)

36.服务器配置ssh server

ssh方便一个开发小组中人员登录一台服务器
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。
查看当前的ubuntu是否安装了ssh-server服务
dpkg -l | grep ssh
安装ssh-server服务
sudo apt-get install openssh-server
确认ssh-server是否启动了:

ps -e | grep ssh


image.png

如果没有则可以这样启动:sudo /etc/init.d/ssh start
ssh-server配置文件 vim /etc/ssh/sshd_config
在下方添加

MaxSessions 10
Port 22
LoginGraceTime 2000m
PermitRootLogin yes
StrictModes no
MaxAuthTries 6
MaxSessions 10
PasswordAuthentication yes
PermitEmptyPasswords yes

关闭再重启
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start

客户端断开连接
client_loop: send disconnect: Broken pipe
解决方法将连接时间设置的长一些
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config

37 tmux命令

与screen类似
1安装
sudo apt-get install tmux
2.查看会话
tmux ls
3.从会话中退回主页
Ctrl+b 后再按d
4.启动新会话:

tmux [new -s 会话名 -n 窗口名]
5.恢复会话:

tmux at [-t 会话名]
6.关闭会话:

tmux kill-session -t 会话名

  1. 新建一个名字的窗口
    tmux new –s name

38 python pdb调试方法

import pdb

在正文可能有错的地方添加pdb.set_trace()
正常运行脚本
运行到此行时,出现
(Pdb)
输入n 运行下一行
输入p x或者x.shape 输出变量或者其shape
输入l查看原始代码
当某一行有错误时候,会出现
(Pdb) RuntimeError: Given normalized_shape=[192], expected input with shape [*, 192], but got input of size[128, 64, 64]
类似的错误,方便定位。

30 vscode ssh 远程连接

连接方法参考
https://zhuanlan.zhihu.com/p/68577071
https://server.51cto.com/article/684146.html
连接后总需要输入密码解决方法
https://blog.csdn.net/jyhongjax/article/details/106075493
原始是系统自带的openssh版本不对

image.png

先安装git
编辑环境变量


image.png

添加环境变量
新建,将安装的git路径添加上去
C:\Program Files\Git\usr\bin


image.png

将其上移到系统自带的openssh上方。
重开打开cmd ssh -V查看ssh版本变为
image.png

31 路径下文件名排序

file_list = os.listdir(input_dir)
file_list.sort(key=lambda x: int(x[:-4])) # 文件名 按数字排序
比如文件夹下文件名为123.jpg,从开始到.用数字进行排序

将中文保存为json时,需要加ensure_ascii=False防止乱码

with open(text_image_path,'w',encoding='utf-8') as f:#path为json文件路径
json.dump(dictionary_full, f,ensure_ascii=False)

32 取出字典的多个key的对应value

from operator import itemgetter
aa={'a','1','b',2'','c','3'}
keys = ['a','b']

out = itemgetter(*keys)(aa)
out=('1','2')
这样的输出是元组tuple
想转成list
output=list(out)

33查看正在运行的python程序

ps aux | grep python

tmux输出看不全

ctrl+b然后松开,再按一下[

34用ll命令查看idx 索引文件大小

如果8个节点 /8就是一个epoch使用的数据
ll ./5epochs10m_cn_32_mclip.idx
-rw-r--r--. 1 root root 86446144 Nov 8 08:53 ./5epochs10m_cn_32_mclip.idx

35 python按每行写入/读取json文件

import json
data_list = [
    {'href': 'http://www.jskunshan.cn/', 'text': ' 首页'},
    {'href': 'http://www.jskunshan.cn/python', 'text': ' python'}
]
for item in data_list:
    with open('data.json', 'a+', encoding='utf-8') as f:
        line = json.dumps(item, ensure_ascii=False)
        f.write(line+'\n')

36 pip 离线安装 tar.gz whl

1、安装whl包:

执行:pip install **.whl(前提是要安装好pip和wheel)

2、安装tar.gz包:

(1)解压 tar -zxvf xxx.tar.gz;

(2)·cd到解压后路径,执行python setup.py install

常见git命令使用

下载共享项目

git clone http://xxx.git

查看所有分支

git branch -a

仅仅切换分支

git checkout dataset_load

查看当前分支

git branch

查看文件修改状态

git status

add 更新过的文件,进行add操作

git add xxxdataset.py

上传并评论当前修改

git commit -m 'revise dataload bug'

推送分支

git push origin dataset_load

切换并新建新分支

git checkout -b dataset_load_big

创建新分支,更新时要更新新分支 git push origin

本地代码管理

  1. 环境配置 应户名/邮箱

git config --global user.name "Your Name"

git config --global user.email your_email@example.com

  1. 将一个目录初始化成 Git 仓库

git init .

  1. git add 添加修改文件

fatal: detected dubious ownership in repository at '/path/to/repo'

To add an exception for this directory, call:

git config --global --add safe.directory /path/to/repo

可能出现这个错误,方法为

git config --global --add safe.directory /path/to/repo

/path/to/repo为报错中出现的路径

  1. git commit -m ‘change’ 声明修改

  2. 比较最新的提交和指定文件的历史版本之间的差异:

git diff HEAD~1 <file>

HEAD~1 表示最近的上一个提交,<file> 是要比较的文件名。

比较任意两个提交之间的差异:

git diff <commit1> <commit2> <file>

<commit1><commit2> 分别是要比较的两个提交的 SHA-1 标识符,<file> 是要比较的文件名。

37.多个文件合并成一个

cat file1.txt file2.txt > merged.txt
将一个文件夹下的所有文件合并成一个文件,并将结果输出到特定的路径
cat /path/to/folder/* > /path/to/output/merged.txt

38.查看文件行数

wc -l file.txt

39.要查看一个txt文件的前10行,你可以使用以下命令:

head -n 10 filename.txt

40批量下载huggingface dataset filesandversions里的全部文件

到你所要下载模型或数据集文件后,去掉后面的/tree/main,然后增添.git,之后使用git下载就可以了。

到控制台命令执行如下命令:
git clone https://huggingface.co/datasets/glue.git

image.png

41.使用vim将txt中的<sep>替换为<n>

image.png

41.查看正在运行的程序

ps aux | grep python

42.使用vim查看一个字符出现的次数

:%s/字符//gn

43.将txt中不含某个字符的行数取出来

题目带代码的可以用以下命令清洗 awk '!/错误代码/' input_file > output_file

查看某个路径下有多少个文件

ls -l <directory> | wc -l

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容