语言, 其他语言

Linux常用命令和超算中PBS常用命令

自己的Linux和PBS使用笔记,贴在这里。

一、Linux命令

1. 最常用

ls(英文全拼:list files):列出目录及文件名
ls -l:列出目录及文件名的详细信息
ls -a:可看的隐藏文件
ls -al:可看到隐藏文件和详细信息
cd(英文全拼:change directory):切换目录
cd .. :返回上一级
cd 文件夹名:进入某个文件夹
cd ../文件夹名:进入上一级目录中的某个文件夹
pwd(英文全拼:print work directory):显示目前的目录
mkdir 文件夹名(英文全拼:make directory):创建一个新的目录
rmdir 文件夹名(英文全拼:remove directory):删除一个空的目录
cp xxx xxx(英文全拼:copy file): 复制文件或目录
mv xxx xxx(英文全拼:move file): 移动文件或目录,或修改文件或目录的名称
rm(英文全拼:remove): 删除文件
rm -r 文件夹名:递归删除某目录
clear:清空terminal的所有内容(或者使用Ctrl+L)
tab按键:补充完整文件名或文件夹名

2. 次常用

vim/vi 某文件 (编辑文件)
nano 某文件 (编辑文件)
touch 文件 (新建空文件)
cat 某文件(连接文件并显示到标准输出设备上)
sudo -s (切换到root模式)
exit (退出root模式等)
reboot(重启)
wget(从网络上下载文件)
ifconfig(查看IP地址)
fdisk -l(查看磁盘)
df -h(查看磁盘使用率)
du -sh * (查看各个文件夹的占用空间大小)
free -h (查看内存使用率)
mount(挂载硬盘)
umount(取消挂载硬盘)
nohup python test.py &  (后台运行,在终端退出后命令仍旧执行,全称:no hang up。后面的&记得带上)
ps -ef (查看进程)
ps -ef | grep test  (查找有test关键字的进程)
lsof -i :端口号 (查看某端口号的占用情况)
kill PID_num (杀死PID_num对应的后台程序)

3. 其他命令

source ~/.bashrc(更新当前用户的环境配置)
sudo chmod -R 755 文件名/文件夹名 (获取文件/文件夹的755权限)
chown [用户] [文件或目录] (改变文件或目录的所有者)
chgrp [用户组] [文件或目录] (改变文件或目录的所属组)
make (编译成.exe)
wget -t 0 -c (支持自动重连下载)
nvidia-smi (查看英伟达显卡信息)
tail -f 某文件(实时追踪某个文件的更新,按Ctrl+C退出)
安装deb软件包:sudo dpkg -i deb文件
查看deb软件包:sudo dpkg -l
卸载deb软件包:sudo dpkg -r 软件名
.tar文件 (解包:tar xvf FileName.tar。打包:tar cvf FileName.tar DirName。注:tar是打包,不是压缩)
.gz文件(解压1:gunzip FileName.gz。解压2:gzip -d FileName.gz。压缩:gzip FileName)
.tar.gz 和 .tgz文件(解压:tar zxvf FileName.tar.gz。压缩:tar zcvf FileName.tar.gz DirName)

参考资料:

[1] Linux 教程
[2] Linux常用命令
[3] linux中tar命令的用法
[4] 全网最全Linux命令总结

4. Linux环境变量

  • 方法1:修改/etc/environment文件(对所有用户有效)
  • 方法2:修改.bashrc文件(对当前用户有效,运行“source ~/.bashrc”命令后生效)

参考资料:Linux PATH 作用以及查看和修改方法_haozhepeng的专栏

二、vim/vi里的操作

:q 退出
:wq 保存并退出
:w 保存
:q! 强行退出(不保存退出)
:w! 强行保存
i 进入编辑,转为输入模式(光标前面)
a 进入编辑,转为输入模式(光标后面)
o 进入编辑,转为输入模式(光标下方新建一行)
Esc 退出i(插入)命令

三、PBS命令和提交任务的sh文件

pbsnodes (查看所有节点)
pbsnodes -l free (查看空闲节点)
pbsnodes 某节点 (查看某节点状态)
ssh 某节点 (转到某节点)
exit (离开节点)
qsub 文件名.pbs/sh (提交任务)
qstat (列出队列)
qstat -a (列出队列的详细信息)
qstat -q (列出节点信息)
qstat -n (列出队列中使用的节点)
qstat -f jobid (查看jobid任务的详细信息)
qdel jobid (取消任务)
qdel $(seq 100 130) (连续任务号的批量取消任务)

另外,Slurm调度系统的默认提交作业命令为:sbatch,而不是qsub。有些超算只支持sbatch。

计算成本说明:如果程序整体是非并行的,那么指定一个核计算即可,这时候性价比是最高的,即“#PBS -l nodes=1:ppn=1”。虽然多核同时运算时底层算法有一定程度的加速,但加速的比例并没有按CPU数量成倍增加。如果不清楚某个程序并行的能力,可以用单核、双核、三核等配置分别进行测试,并记录计算时间。

以下是用于PBS提交任务的sh文件信息,供参考。

提交任务,执行a.py。a.sh文件为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
python a.py

如果是执行a.exe文件,a.sh文件修改为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
./a.exe

有时候需要加上“cd $PBS_O_WORKDIR”,定位到工作目录中才可以找到a.py文件。a.sh文件修改为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
cd $PBS_O_WORKDIR
python a.py

如果使用集群或者超算,存在多个队列,可能还需要加上队列的名字,如“#PBS -q debug”。a.sh文件修改为:

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
#PBS -q debug
cd $PBS_O_WORKDIR
python a.py

此外,也可以指定OMP并行的线程数,如下所示。但一般来说,这里不用设置也可以。

#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
#PBS -q debug
cd $PBS_O_WORKDIR
export OMP_NUM_THREADS=1
python a.py

四、其他

1. Linux开机自启(有点繁琐,可能不一定起作用)

方法(1):使用 systemctl enable xxx

方法(2):自定义运行内容,具体步骤如下,用到 chkconfig 命令。

chkconfig 好像可以用 update-rc.d 命令代替,但具体的用法不大一样。

sh文件中包含:

#!/bin/bash
#chkconfig: 2345 80 90
#description:auto_run

sh文件移动到/etc/init.d后,分别输入命令:

  • chkconfig --add xxx.sh
  • chkconfig --list
  • chkconfig xxx.sh on
  • service xxx.sh start

参考资料:linux 开机启动 .sh 文件 - 自己的太阳 - 博客园

2. makefile文件

makefile文件(用于编译fortran文件,只对该软件路径有效。旧版本,仅作参考)

INC := -I/public/software/compiler/intel/composer_xe_2015.2.164/mkl/include/intel64/lp64
LIB := -L/public/software/compiler/intel/composer_xe_2015.2.164/mkl/lib/intel64
mpi:= -I/public/software/mpi/mpich/3.1.4/intel/include /public/software/mpi/mpich/3.1.4/intel/lib -lmpich -limf -lsvml -lintlc 
src:=Console1
exec:=a
all: $(src).f90
ifort  $(src).f90  $(INC) $(LIB) -openmp -lmkl_intel_lp64 -Wl,--start-group -lmkl_intel_thread -lmkl_lapack95_lp64 -lmkl_core -lmkl_blas95_lp64  -Wl,--end-group -liomp5 -lpthread -O2 -o $(exec).exe

另外一个makefile文件(用于编译fortran文件,只对该软件路径有效。相对较新,仅作参考):

INC := -I//opt/intel/oneapi/mkl/2022.0.2/include/intel64/lp64
LIB := -L/opt/intel/oneapi/mkl/2022.0.2/lib/intel64
src:=a
exec:=a
all: $(src).f90
	ifort $(src).f90 $(INC) $(LIB) -lmkl_intel_lp64 -Wl,--start-group -lmkl_intel_thread -lmkl_lapack95_lp64 -lmkl_core -lmkl_blas95_lp64  -Wl,--end-group -liomp5 -lpthread -O2 -o $(exec).exe

Fortran环境的安装和设置可阅读这篇:在Linux系统下Fortran和MKL环境的安装和设置

8,914 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code