文章目录
1. vim相关
:g/substr/p //列出所有包含substr的行
:%s/object/result/g // 将文中所有object替换为result
:vs filename //在vim中纵向打开filename
vim t.c t.h // vim同时打开多个文件,并纵向排列
vim -o t.c t.h // vim同时打开多个文件,并横向排列
ctrl+w j/k/h/l //在vim同时打开的多个文件窗口中切换
复制一个单词的过程
将光标移动到单词所在的位置。
按下 viw,这会选中当前单词。其中,v 是进入可视化模式的命令,iw 表示选中当前光标所在的单词。
按下 y 命令,将选中的单词复制到寄存器中。其中,y 命令表示复制(yank)当前选中的文本。
将光标移动到想要粘贴的位置。
按下 p 命令,将寄存器中的内容粘贴到光标所在位置之后。其中,p 命令表示粘贴(paste)之前复制的文本。
2. Linux内置命令
2.1 cat命令
将输出的屏幕的内容添加到txt中
cat ls | tee ./test.txt
2.1.2 make结果重定向到文件
make > make.log 2>&1 //2>&1表示错误信息输出到&1中,而&1,指的是前面的那个文件
2.2 so文件常用操作
查看so文件是32位還是64位
[root@n1 native]# file libhadoop.so.1.0.0
libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
nm用來列出目標文件的符號清單.
ar命令可以用來創建、修改庫,也可以從庫中提出單個模塊。
objdump:顯示目標文件中的詳細信息
objdump -d ,可以查看這些工具究竟如何完成這項任務
ldd 查看可執行文件鏈接了哪些 系統動態鏈接庫
-d是ldd的縮寫
readelf 顯示關於 ELF 目標文件的信息
readelf -d libffmpeg.so | grep NEEDED
objdump -V libhadoop.so.1.0.0
顯示:
GNU objdump version 2.20.51.0.2-5.36.el6 20100205
Copyright 2009 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
ldd libhadoop.so.1.0.0
顯示: linux-vdso.so.1 => (0x00007fffbf3d6000)
libdl.so.2 =>/lib64/libdl.so.2 (0x00007fab46569000)
libjvm.so => not found
libc.so.6 => /lib64/libc.so.6 (0x00007fab461d4000)
/lib64/ld-linux-x86-64.so.2 (0x00007fab46990000)
2.2.1 查看so文件中包含的函数
nm -D /path/to/libwhatever.so
2.3 find命令
find ${directory} -name ${name} // eg. find ./ -name test* 查找当前目录下以ieout开头的文件
2.4 locate命令
locate ${name} // eg. locate test 在全局路径下搜索test开头的文件
locate ~/${name} // eg. locate ~/test 在home搜索test开头的文件
2.5 LD_PRELOAD 动态库加载
LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。
如果我们通过替换加载的动态库更改程序加载的动态库 & 函数,操作如下
export LD_PRELOAD=$LD_PRELOAD:./test.so //加载当前目录下的test.so
export LD_PRELOAD=NULL; //卸载库
unset LD_PRELOAD //恢复LD_PRELOAD
echo ${LD_PRELOAD} // 打印环境变量 LD_PRELOAD 的内容
3 nc复制文件
在接收端监听: nc -lp 8778 > tc.txt
在发送端发送:nc -w 1 192.168.0.125(接收端ip) 8778 < tc.txt
4. nvidia 相关
watch -n 0.1 -d nvidia-smi # 每隔 0.1秒 刷新一次
fuser -v /dev/nvidia* && kill -9 ${pid} # 杀死占用显卡的进程
5. GDB
5.0 安装
1)sudo apt-get build-dep gdb
2)apt-get source gdb
3)cd gdb-x.x.x
#生成makefile
4) ./configure --enable-tui=yes --with-python
#等待编译完成
5)sudo make
#安装
6)sudo make install
5.1 gdb 保存调试信息
1、# (gdb) set logging file <文件名>
设置输出的文件名称
2、# (gdb) set logging on
输入这个命令后,此后的调试信息将输出到指定文件
3、# (gdb) thread apply all bt
打印所有线程栈信息
4、# (gdb) set logging off
输入这个命令,关闭到指定文件的输出
5.2 gdb cuda-memcheck 使用
cuda-gdb
set cuda memcheck on
r ${可执行程序}
5.2 gdb 多线程调试
info thread # 查看所有thread
thread apply all bt # 查看所有thread 的堆栈信息
thread ${ID} #跳转到m某一thread
5.3 gdb查看所有变量
set logging file ${path_to_file}
set logging on
set print pretty on
set print array-indexes on
p ${结构体、vector等对向} //最终结果会记录到log 文件中
p this->member_value // 查看类成员变量
gdb 查看vector
p *(myVector._M_impl._M_start)@myVector.size() //打印整个vector
p *(myVector._M_impl._M_start)@N // 打印第N个vector
p (myVector._M_impl._M_start)[N-1] // 打印第N个元素,标号从0开始
p *(myVector._M_impl._M_start+N-1) // 打印第N个元素,标号从0开始
5.4 进阶
https://zhuanlan.zhihu.com/p/508160353
6. scp相关
6.1 scp断点续传
rsync -P --rsh=ssh fileneme user@192.168.205.34:/home/user/
7. conda相关
7.1 conda基础操作
conda env list //查看当前已有环境环境。
conda create --name env_name # 创建环境
conda create --name env_name python=3.5 # 创建指定python版本
conda create --name env_name python=3.5 numpy scipy # 创建指定python版本下包含某些包
conda create --name new_env_name --clone old_env_name # 复制某个虚拟环境
conda activate env_name # 激活已有环境
conda deactivate # 退出当前环境
conda install python=3.9 # 在conda虚拟环境中直行此命令,会将python版本从默认版本改为python3.9
conda remove --name <env_name> --all #--name后跟待删除的环境名称,--all表示删除整个环境。
7.2 从他人电脑复制conda环境
$ conda env list //查看他人环境
# conda environments:
#
# base * /home/zhouwg/anaconda3
# r-reticulate /home/zhouwg/anaconda3/envs/r-reticulate
# scATACseq /home/zhouwg/anaconda3/envs/scATACseq
conda env export -n scATACseq > scATACseq.yaml // 创建目标环境的yaml文件
scp scATACseq.yaml username@IP:/home/xxx/data/software //将他人环境的yaml文件拷贝到自己电脑
conda env create -n scATACseq -f scATACseq.yaml //在自己电脑根据yaml文件创建环境
8. pytorch相关
pip uninstall torch torchvision torchaudio # 卸载pytorch
https://mirror.sjtu.edu.cn/pytorch-wheels/cu111/?mirror_intel_list # pytorch 等快速下载链接 首选
https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/linux-64/ # 快速下载地址,次选
pip install torch-1.9.1+cu111-cp38-cp38-linux_x86_64.whl # 安装下载得到的文件。
9. 常用插件配置
9.1 工作区配置
sudo apt-get install gnome-tweak-tool // 安装gnome-tweaks
gnome-tweaks // 打开tweaks & 选择静态工作区,可使得双屏工作区联动
进入https://extensions.gnome.org
搜索Workspace Matrix 并安装,就可生成工作区矩阵
9.2 状态栏配置
进入https://extensions.gnome.org
搜索 system-monitor 并安装,可生成如下状态栏。
10. pip相关
## 导出pip包
pip freeze > requirements.txt
## 导入pip包
pip install -r requirements.txt
## pip 从指定软件源安装,以numpy为例
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ numpy
## pip 基于wheel文件离线安装,各种whl地址:https://download.pytorch.org/whl/cu111/torch_stable.html
pip install torch-0.4.1-cp36-cp36m-linux_x86_64.whl
11 python 相关
11.1 python自定义模块
对于python2.7来讲,需要在每一层增加__init__.py空文件,以标志该文件夹是作为一个python模块
对于python3.3以后得版本,会默认生成__init__.py空文件,因此不再需要手动添加。
12 ssh 相关
12.1 ssh秘钥生成
ssh-keygen -t rsa -C “username” // 生成秘钥,然后将生成的秘钥添加到git的公钥处,就可下载&上传代码了。
13 docker 相关
核心为:基于镜像生成容器,然后用户使用容器。容器类似于c++中的实例,镜像类似于c++中的类。
13.1 基础操作
docker pull ubuntu:20.04 // 拉去ubuntu镜像
docker run -it --gpus all --name ubuntu2004 --shm-size="32g" -p 8080:22 ubuntu:20.04 /bin/bash // 根据镜像创建名为ubuntu2004的容器
docker start ${容器名} // 运行容器
docker stop ${容器名} // 停止运行容器
docker attach ${容器名} // 进入正在运行容器
docker commit -m ${说明信息} -a ${author} ${容器名} ${镜像名}:${tag名} //-m 说明信息;-a 作者信息;-p 生成过程中停止容器的运行; eg:docker commit -m "ubuntu20.04-base" -a liuzhongze c0433b0c3f0e iregistry.baidu-int.com/adu-perception-calibration/ubuntu20-base:ubuntu20
docker push ${镜像名}:${tag名} //将容器推送到服务器,eg:docker push iregistry.baidu-int.com/adu-perception-calibration/ubuntu20-base:ubuntu20
docker images // 查看当前所有镜像
docker ps -a // 查看所有容器
docker rm ${容器名或容器id} // 删除容器
docker rmi ${镜像名或镜像id} // 删除镜像
14 mmdet3 相关
14.1 安装
conda activate mmdet3d
pip install openmim -i https://pypi.tuna.tsinghua.edu.cn/simple/
mim install mmcv-full
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d-master
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple/
mim install 'mmdet<3.3.0,>=3.0.0' -i https://pypi.tuna.tsinghua.edu.cn/simple/
mim install 'mmcv<2.2.0,>=2.0.0rc4' -i https://pypi.tuna.tsinghua.edu.cn/simple/
mim install mmengine -i https://pypi.tuna.tsinghua.edu.cn/simple/
15 pytorch相关安装
torch相关快速下载地址:https://download.pytorch.org/whl