文章目录
一、转载,linux常用命令大全
二、我自己常用的命令
1、文件操作
linux复制文件到指定文件夹
copy命令 :该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下:
- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d 拷贝时保留链接。
- f 删除已经存在的目标文件而不提示。
- i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- l 不作拷贝,只是链接文件。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
cp -p label_mirna_die_hdmm20_deepwalk_sampling.csv ~/xxx/pytorchPractice/ThirdSection/data/
cp命令:cp是"copy"的缩写,用于复制文件或目录到另一个位置。
例如:复制 文件a.txt 到 目录home下
cp a.txt home
例如:复制 目录cl 到 目录home下
cp -r cl home (-r选项用于递归复制,复制整个目录树)
参考资料:https://www.cnblogs.com/dpf-learn/p/6143145.html
删除文件夹
rm -r 文件夹名
2、系统间文件夹操作
https://blog.csdn.net/gatieme/article/details/51673229
scp -r /data/user/codespace/hgpractice/ remoteuser@remote-userip:/home/data/codespace/hgpractice/
上方命令将本地的hgpractice以及其下面的所有文件发送到远程客户端的hgpractice文件夹下,会导致一个问题,就是远程用户的hgpractice目录有两层,应该改成如下;
远程目录中无需创建hgpractice文件夹:
scp -r /data/user/codespace/hgpractice/ remoteuser@remote-userip:/home/data/codespace/
3、系统信息
lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core
4.修改DNS
在linux中,sudo全称“super user do”,意思为“干超级用户才能干的事”,是一个系统权限管理命令,可以让非root的用户运行只有root才有权限执行的命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。
sudo的配置都记录在/etc/sudoers文件中,配置文件指明哪些用户可以执行哪些命令。要使用sudo,用户必须提供一个指定用户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。
修改DNS
sudo vi /etc/resolv.conf
修改后保存即可
可以解决无法访问外网的问题
5、GPU管理
ubuntu 查看服务器的GPU 谁(用户)在使用
查看gpu使用情况,命令:
nvidia-smi
通过输出得到可以得到GPU占用情况和主要使用GPU的进程下图所示
根据结果可以看到进程24444在跑训练
执行以下命令,可以显示进程的执行时间和进程文件名。
ps -f -p 24444
其中
UID 表示用户ID
PID 表示进程号
PPID 表示父进程号
TIME 表示执行时间
CMD 表示执行命令
#杀死进程
kill -9 PID
GPU可以安装nvitop来看,更直观。
conda install nvitop
6、查看文件夹下的文件数量
ls -l | grep "^-" | wc -l
7、 从github中下载代码
git clone <github中的https地址>
当无法现在或者下载很慢的时候,尝试ping一下github.com然后再下载,就可以了。
ping github.com
git clone <github addreass>
8. shell脚本文件使用
假设现在有一个脚本文件如下:
#!/usr/bin/env bash
export RECLOR_DIR='./arg_30k' #源代码中是'/arg_30k'
export TASK_NAME=reclor
export MODEL_DIR=roberta-base
export MODEL_TYPE=DAGN
export GRAPH_VERSION=4
export DATA_PROCESSING_VERSION=32
export MODEL_VERSION=2132
export GNN_VERSION=GCN_reversededges_double
export SAVE_DIR=test
CUDA_VISIBLE_DEVICES='0,1' python run_assesment.py \
--task_name $TASK_NAME \
--model_type $MODEL_TYPE \
--model_name_or_path $MODEL_DIR \
--init_weights \
--do_train \
--do_eval \
--do_predict \
--data_dir $RECLOR_DIR \
--graph_building_block_version $GRAPH_VERSION \
--data_processing_version $DATA_PROCESSING_VERSION \
--model_version $MODEL_VERSION \
--merge_type 4 \
--gnn_version $GNN_VERSION \
--use_gcn \
--use_pool \
--max_seq_length 128\
--per_device_eval_batch_size 32\
--per_device_train_batch_size 32\
--gradient_accumulation_steps 4 \
--roberta_lr 2e-5\
--proj_lr 2e-5\
--num_train_epochs 5\
--output_dir Checkpoints/$TASK_NAME/${SAVE_DIR} \
--fp16 \
--logging_steps 200 \
--save_steps 400 \
--adam_epsilon 1e-6 \
--weight_decay 0.01
间接在后台运行脚本(退出shell后中断)
- 执行脚本run.sh:./run.sh
- 中断脚本run.sh:ctrl+c
- 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z
执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid)
直接在后台运行脚本(退出shell后中断)
- 直接在后台运行脚本test.sh:./test.sh &
- 查看当前shell环境中已启动的任务情况:jobs
- 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid)
中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number
nohup 不中断运行test.sh脚本
以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。
- 不中断的在后台运行test.sh:nohup ./test.sh &(test.sh的打印信息会输出到当前目录下的nohup.out中)
- 使用jobs可看到test.sh处于running状态
- 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程
- 退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用ps -ef可以看到
参考原文链接:https://blog.csdn.net/xiaolong_4_2/article/details/82626808
后台运行+日志重定向
nohup python xxx.py > xxx.log 2>&1 &
nohup python xxx.py > xxx.log &
ubuntu文件解压缩
tar.gz文件解压缩
在bash shell中,你可以使用find和tar命令来解压一个文件夹中的所有.tar.gz文件。以下是一个命令示例:
find {directory} -name '*.tar.gz' -exec tar -xzvf {} \;
Replace {directory} with the path to the directory that contains the .tar.gz files.
这个命令会在指定的目录及其子目录中查找所有.tar.gz文件,并使用tar -xzvf命令解压它们。-exec选项允许你对find命令找到的每个文件执行一个命令,{}代表当前找到的文件,;表示-exec选项的结束。
需要替换的文本:
{directory}: 包含.tar.gz文件的目录的路径。
注意,如果tar.gz没有下载完整,该命令会失败。可能的原因是,仓库中的文件过大,导git clone没有完整下载好文件,因此你需要通过进入仓库对应的文件夹通过git lfs pull
尝试下载,如果仍然无法有效下载,则需要你自己通过克隆仓库后,设置
然后自己下载压缩包即可。
9、linux文件互传、下载
https://cloud.tencent.com/developer/article/1857039
10、conda 环境互传
#导出已有环境
activate your_environment
#传送环境到另一台设备
scp -P XXX -r models/ root@XXX:~/codespace/
#安装环境
conda env export > environment.yaml