提示:日常笔记,主要记录一些平时常用的实用命令
文章目录
软件安装
提示:主要记录一些Ubuntu一般实用的软件:
ffmpeg -i input.mp4 -b:v 640k output.mp4
常用命令
1、批量解压tar压缩包
for tar in *.tar; do if [ ! -d ${tar%.*} ]; then echo "make dir ${tar%.*}"; mkdir ${tar%.*};fi;tar -xvf $tar -C ${tar%.*}/; done
for tar in *.tar; do if [ ! -d ${tar%.*} ]; then mkdir ${tar%.*};fi;tar -xvf $tar -C ${tar%.*}/; done
for tar in *.tar; do echo ${tar%.*}; mkdir ${tar%.*}; done
2、screen
screen -ls #查看screen列表
screen -dmS paddle # 创建一个paddle的session
screen -r paddle #进入session
screen -r paddle #将当前在另一个终端attach的会话强制退
ctrl + a + d #暂时退出
screen 显示窗口查看历史输出
命令:ctrl + a + [
先利用ctrl-a [ 进入copy mode。在copy mode下可以回滚、搜索、复制就像用使用 vi 一样。在copy mode下有这些快捷键:
C-b :Backward、PageUp
C-f :Forward、PageDown
H: High,将光标移至左上角
L:Low,将光标移至左下角
0:移到行首
$:行末
w:forward one word,以字为单位往前移
b:backward one word,以字为单位往后移
Space: 第一次按为标记区起点,第二次按为终点
按esc退出copy mode。
在copy mode下不会实时的同步输出信息。也就是说进入copy mode后,你所能看到的就是从开始到你进入时的所有输出,以后的输出并不会同步。所以需要esc退出再查看。
3、docker 常用命令
查看docker 容器挂路径
docker inspect 容器名称| grep Mounts -A 20
#查看log
docker-compose logs --tail 50 -t -f
#查看网络列表
docker network ls
(paddle) user@user-FitServer-G4A60:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
5f46938d6a91 bridge bridge local
# 创建容器
docker run -it --runtime=nvidia --name yolov5_headshoulder --shm-size 32G -v path/to/path:path/to/path -w /home/pan 34ad4ada2ea0 bash
镜像移动
sudo docker images
sudo docker save ebbeec5cc249 > /tmp/tablet_fresh_v6.tar (docker save 镜像id > /mnt/tablet_fresh_v6.tar (tar包))
sudo docker load < /mnt/tablet_fresh_v6.tar
#查看所有images和容器的大小
sudo docker system df -v
#容器导出/导入
docker export 5a9229275d3c > lamp.tar #将容器导出
docker import lamp.tar
#镜像重命名
sudo docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
sudo docker tag ebbeec5cc249 panubuntu123/fresh:v6
修改docker 挂载路径–这里是修改的原容器的挂载路径,不是提交再run
停止 docker 服务
systemctl stop docker.service
#查看挂载路径
docker inspect yolov5| grep Mounts -A 20
#查看容器id
docker ps -a
#找到 MountPoints,并修改挂载路径
vi /var/lib/docker/containers/container-ID/config.v2.json
重启 docker 服务
systemctl start docker.service
docker设置自动启动容器
#1、使用 docker run 命令运行时
增加 --restart=always 参数即可
#2、使用 docker-compose 命令运行时, 在 yml 文件中,需要自启动的 service 下
增加 restart: always 项目即可
#3、已运行的容器修改其自启动策略 执行命令:
docker update --restart=always 容器名或容器ID
#重启docker服务
systemctl stop docker.service
systemctl start docker.service
linux修改容器中的shm值
查看shm值:df -h
查看已经启动的容器:docker ps
因为所有命令需要在sudo中执行:sudo -i
默认目录:cd /var/lib/docker/containers
进入容器:cd <container_id>
执行修改shm命令:mount -o remount,size=5G shm(shm为容器目录下的一个文件)
#查看容器大小
docker ps -s
#docker中默认存放镜像和容器的目录是:/var/lib/docker/
docker system prune [-a]
# 1、清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。
#2、-a :清理得更加彻底,可以将没有容器使用Docker镜像都删掉。
#查看Docker的磁盘使用情况
docker system df
4、软连接
Then link your dataset path to datasets
cd datasets/
ln -s /path/to/coco coco
5、shell统计当前文件夹下的文件个数、目录个数以及ls命令
1、 统计当前文件夹下文件的个数
ls -l |grep "^-"|wc -l
2、 统计当前文件夹下目录的个数
ls -l |grep "^d"|wc -l
3、统计当前文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l
ls -lR|grep "^-"|grep "JPG$"|wc -l #统计当前文件夹下文件的JPG文件的个数,包括子文件夹里的
4、统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
#注
# grep "^-" 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
# wc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
#判断目录下文件数与指定文件数量是否相等
#fileNum.sh
#! /bin/sh
num=$1
DR=`ls`
for dir in $DR
do
if [ -d "$dir" ]; then
cd "$dir"
fileNum=`ls -l |grep "^-"|wc -l`
if [ "$num" -ne "$fileNum" ];then
echo `pwd` >> ../error.txt
fi
cd -
fi
done
#./fileNum.sh 5要判断的文件数量
ls Annotations/ | head -n 5 # 只列出前N个目录
ls -d image[1-2] 或 ls -d image1 iamge2 #只列出image1,image2目录
ls -d image* # 列出所有image开头的目录
ls | pr -2 -t >aa.txt #该命令将输出文件名为两列。如果是一列,则将-2换成-1即可。
5.1、shell split
[root@dw-hsd02-pe connect]# split --help
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N 生成长度为N的后缀(默认值2)
--additional-suffix=SUFFIX 文件名后面附加一个后缀
-b, --bytes=SIZE 按大小切割文件 -b 10k/10m/..
-C, --line-bytes=SIZE 按字节切割文件类-b
-d, --numeric-suffixes[=FROM] 使用数字后缀替代字母
FROM changes the start value (default 0)
-e, --elide-empty-files 不生成带有'-n'的空输出文件
--filter=COMMAND write to shell COMMAND; file name is $FILE
-l, --lines=NUMBER 按行切割文件
-n, --number=CHUNKS 按生成文件个数切割
按文件大小切分,并指定后缀
[root@]# split -b 1k biz_date.txt -d -a 1 date_
date_0
date_1
按字节切分
[root@ tmp]# split -C 200 biz_date.txt -d -a 1 date_
date_0
date_1
date_2
date_3
date_4
date_5
date_6
(按大小切分有或许会把一行文件拆开,放到另一文件导致数据不完整,需要手动处理数据)
批量为文件添加后缀
[root@ tmp]# ls | grep date_|xargs -n1 -i{} mv {} {}.txt
date_0.txt
date_1.txt
date_2.txt
date_3.txt
date_4.txt
date_5.txt
date_6.txt
按行数切割,并重命名文件
[root@ tmp]# split -l 50 biz_date.txt -d -a 1 date_
date_0
date_1
date_2
[root@ tmp]# ls |grep date_|xargs -n1 -i{} mv {} {}.txt
date_0.txt
date_1.txt
date_2.txt
按输出文件个数切割
[root@ tmp]# split -n 5 biz_date.txt -d -a 2 biz_
biz_00
biz_01
biz_02
biz_03
biz_04
6、删除所有相同进程
ps -ef | grep fresh_void | grep -v grep | awk '{print "kill -9 "$2}'|sh
kill -9 `ps -ef | grep fresh_void | grep -v grep | awk '{print $2}' `
7、常用Linux命令
7.1 修改文件夹权限
sudo chmod 777 * -R
一、常识
学历:研究生
学位:硕士
二、常用代码
1、pytorch分布式训练
python -m torch.distributed.run --nproc_per_node 8 train.py --data data/headshoulder.yaml --cfg models/yolov5s.yaml --weights 'yolov5s.pt' --batch-size 128 --device 0,1,2,3,4,5,6,7
2、查看动态链接库
三种方法
1、ldd ./autogen.sh
2、LD_TRACE_LOADED_OBJECTS=1 ./autogen.sh
3、readelf -d autogen.sh | grep NEEDED
##3、tqdm使用技巧
for ind, image_path in enumerate(tqdm(image_path_list, "Performing inference on images")):
....
tqdm.write(f"Performing prediction on {num_slices} number of slices.")
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。