Ubuntu常用操作

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zack_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值