目录
ubuntu “Argument list too long”解决方法
pip install -r requirements.txt
常用命令:
vim //编辑文件
cat //查看文件且不编辑
cp -r //复制文件夹,源文件绝对地址 目标目录
// -r 若 source 中含有目录,则将目录下之档案亦皆依序拷贝至目的地。
mv source dest //剪切命令:命令格式:
rm -rf 文件名
mkdir 文件名 //新建文件
pwd //显示当前目录
nvidia-smi //查看gpu信息
history //显示输入命令的历史
df -l 或 df -h //linux查看系统盘,df -h:显示以G为单位
free -h //linux查看系统内存,以G为单位
nohup 执行的命令 & //将进程挂在服务器上运行:
kill -9 id //kill掉进程:
pip freeze > requirements.txt //将当前环境所有库 写入requirements.txt
tail -f -n 10 log/sg_ai_framework.log
添加权限
chmod +x a.sh //转为可执行文件
文件属性字段总共有10个字母组成,
第一个字母表示文件类型:
减号"-",是一个普通文件.
字母"d"是dirtectory(目录)的缩写;
字母是"l",是一个符号链接.符号链接的概念类似于windows里的快捷方式.字母"l"是link(链接)的缩写.在UNIX类系统中,一个文件可以有多个文件名,一个文件的多个文件名之间互称为硬链接(hard link).这些文件头可以指向同一个文件,删除其中一个文件名并不能删除该文件,只有把指向该文件的所有硬链接都删除,这个文件所占用的空间才真正被释放,该文件才真正被删除.;
b的表示块设备文件(block),设备文件是普通文件和程序访问硬件设备的入口.;
第一个字母为c表示该文件是一个字符设备文件(character),一次传输一个字节的设备被称为字符设备,比如键盘,字符终端等,传输数据的最小单位为一个字节.一次传输数据为一整块的被称为块设备,比如硬盘,光盘等.最小数据传输单位为一个数据块(通常一个数据块的大小是512字节).
第一字段的后面9个字母表示文件的权限.
r表是读 (Read)
w表示写 (Write)
x表示执行 (eXecute)
其中前三个表示文件属主的权限,中间三个表示组用户权限,最后三个表示其他用户权限.
查看系统相关的命令
显示系统:uname
显示当前服务器版本信息:uname -a
lsb_release -a
ls相关命令
查看当前路径下的文件:ls;
查看当前路径下文件的权限:ls -l;
统计001-img-wildface文件夹下的文件数量:ls ./001-img-wildface|wc -l
服务器文件交互
$ scp localFile user@xxx.xxx.xx:/
//拷贝本地文件到远端/目录下
$ scp localFile user@xxx.xxx.xx:~
//拷贝本地文件到远端home目录下
//把本地文件夹复制到远端主机:
$ scp -r abc root@xxx.xxx.xxx:~
-r表示递归
把远端文件复制到本地:
scp root@xxx.xxx.xxx:~/awesome.txt ./
scp -r root@xxx.xxx.xxx:~/awesome.txt ./
压缩、解压
注意:tar压缩文件是最快速的,zcvf中v是显示交互信息的,z表示压缩,通常用cf就可以了,因为图片的jpg或是png压缩格式,已经把图片给压缩了;
使用tar压缩文件时,可以在命令前加nohup,表示后台压缩操作;
df -h 可以查看压缩文件的盘内存是否增加,若是增加的数据和压缩文件一样多,说明压缩完成;
ps -aux |grep tar 查询线程,可了解是否压缩完成;
为了避免在解压缩时出现中文乱码问题
unzip -O CP936 archive.zip
zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
tar.gz 或 tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirNam
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
Ubuntu修改文件所有者
例:要将当前目录下名为name的文件夹及其子文件的所有者改为geust组的su用户,方法如下:
#sudo chown -R su.geust name
例:将s11文件夹的所有者改为s11:
#sudo chown -R s11 s11
-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
语法格式: chmod [-vR] [No] 文件名
参数说明:
No 三位代表相应权限的数字
-v 显示权限改变的详细资料
-R 表示对当前目录下的所有文件和子目录进行相同的权限更改
Ubuntu进入和退出root用户以及切换用户
sudo su 进入root
exit 退出root
logout 普通用户退出当前登录状态
linux系统下切换python
ls -l /usr/bin/python* #列出所有的python版本
ln -s /usr/bin/python3 /usr/bin/python #创建软连接python指向python3
rm -rf /usr/bin/python #移除python2.7
python -V #查询python版本
查找文件
//搜查所有目录中,名字中包含trtexec的文件
sudo find / -name "*trtexec*"
找出最后20分钟内内修改过的文件
find ./ -name ‘*.txt’ -mmin -20 -ls
找出最后1天内修改过的文件
find ./ -name ‘*.txt’ -mtime -1 -ls
-
找出最后20分钟内状态改变的文件
find ./ -name ‘*.txt’ -cmin -20 -ls
-
找出最后2天内状态改变的文件
find ./ -name ‘*.txt’ -ctime -2 -ls
-
找出最后20分钟内访问的文件
find ./ -name ‘*.txt’ -amin -20 -ls
-
找出最后1天内访问的文件
find ./ -name ‘*.txt’ -atime -1 -ls
查看进程、端口
ps -aux | grep srs
netstat -ano | grep 1935
tail -f ./objs/srs.log //查看log尾部并不断更新
//查看所有端口
ps aux
下载
git clone --recursive 用于循环克隆git子项目
git clone --recursive https://github.com/onnx/onnx-tensorrt.git
查看内存
1,查看分区情况
fdisk -l
2,查看系统的磁盘空间占用情况
df -h df -TH
3,查看某个目录的使用空间大小
du -sh 需要先进入该目录,或者后面加上路径 du -sh 路径
4、只查看当前目录下文件大小
du -sh * | sort -nr
ubuntu “Argument list too long”解决方法
背景:Linux下使用cp,mv,rm等命令时经常会碰到“Argument list too long”错误,这主要是因为这些命令的参数太长,即文件个数过多。
解决方案:“Argument list too long”这个问题的解决主要会用到两个命令,find和xargs。
1、要删除test文件夹下以jpg结尾的文件
find test/ -name "*.jpg" | xargs -i rm {}
find test/ -name "*.jpg" -exec rm {} \;
2、要拷贝test文件夹下以jpg结尾的文件到train目录。
命令1为:
find test/ -name "*.jpg" | xargs -i cp {} train
或
find test/ -name "*.jpg" -exec cp {} train \;
命令解析
find test/ -name "*.jpg"
是指在test文件夹下查找名为*.jpg的文件。
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。-i会将xargs的内容赋值给{}。
-exec参数后面是指执行其后面的命令,-exec以;为结尾,由于各个系统中分号的意义不同,因此用\进行转义,即;,{}会被find命令的结果替换。
find . -name "*.xml"| xargs -i sudo chmod 777 {}
解释:查找当前目录下 后缀为xml的文件,放在{}中 对其实行赋777;
sudo chown liangj Annotations/
解释:对文件夹 Annotations文件夹 归主定位liangj
Linux中批量杀进程的方法
一、使用awk批量杀进程的命令:
ps -ef |grep hello |grep -v grep |awk '{print "kill -9 "$2}' | sh
说明:
ps -ef |grep hello |grep -v grep # 列出了当前主机中运行的进程中包含hello关键字的进程
ps -ef |grep hello |grep -v grep |awk '{print "kill -9 "$2}' # 列出了要kill掉这些进程的命令,并将之打印在了屏幕上
ps -ef |grep hello |grep -v grep |awk '{print "kill -9 "$2}' | sh # 后面加上 |sh 后,则表示执行这些命令,进而杀掉了这些进程
二、grep和kill联合使用杀掉进程
ps -ef |grep hello |awk '{print $2}'|xargs kill -9
xargs 的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。可单独使用,也可使用管道符、重定位符等与其他命令配合使用。
此处,xargs的作用就是将ps -ef |grep hello |awk '{print $2}' 得到的结果(一个或者多个),传给kill命令使用。
PS:第二种方法和第一种方法类似,只是shell脚本编写有些区别。
命令clear报错
错误: terminals database is inaccessible
原因: 我自己从别的主机复制了一份anaconda(路径为/home/anaconda),然后把环境变量配置文件写为了/home/anaconda/bin:$PATH ,再使用clear命令,默认就是/home/anaconda/bin下的clear命令
解决方案: 在~/.bashrc 文件里面添加 alias clear='/usr/bin/clear'
解释: 强制clear使用/usr/bin/clear 即可
pip install -r requirements.txt
在pip install -r requirements.txt
命令中,-r
参数用于指定一个要安装的软件包依赖项清单文件。这个清单文件通常称为requirements.txt
,其中列出了项目所需的所有依赖包及其版本号。
通过使用-r
参数,pip
命令会读取requirements.txt
文件,并自动安装文件中列出的所有依赖包及其指定的版本。这样可以方便地管理和安装项目所需的所有依赖项,确保项目在不同环境中的一致性。
requirements.txt
文件通常按行列出依赖包的名称和版本号,例如:
package1==1.0.0
package2>=2.3.0
使用-r
参数可以更轻松地安装和管理项目的依赖项,而不必一个一个手动执行pip install
命令来安装每个依赖包。