记录在Linux系统上编程需要的命令及遇到的错误和解决方案
Linux系统:centos 7.0
一、常用命令
1. 查看系统版本:
cat /etc/redhat-release
2. 查看内核版本:
uname -a
3. 删除文件夹及其子文件:
rm -rf XXXX
4. vim打开XXX文件第m行:
vim +m XXX
5. 使用gdb查看core信息:[可用于查看core dumped问题]
$ ulimit -c unlimited
$ mpirun -n 2 ./a.exefile
$ gdb ./a.exefile core.xxx
#追踪产生segmenttation fault的位置及代码函数调用情况:
gdb>bt
db>q
segmentation fault 问题可以设置ulimit -s unlimited
使用ulimit -a 可以查看系统内存的设置
此处参考链接:https://blog.csdn.net/weixin_44010117/article/details/107718757
6. 查看GPU信息
lspci | grep -i nvidia
7. 查看每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep “cpu cores” | uniq | awk -F: ‘{print $2}’
8. 查看有多少个物理CPU:
cat /proc/cpuinfo | grep “physical id” | sort -u | wc -l
9. 查找库文件路径
ldconfig -p | grep lib_name
例: ldconfig -p | grep libcublas
10. 调整命令终端字符大小
终端上方的设置:
Edit->preference->General
view->zoom in/out
11. 打印PCIe树
/sbin/lspci -tv
12. 清空文件内容
//使用cat查看清空后文件会有一个空行
echo > file_name
//如果不想有空行
echo -n “” > file_name
13. 比较两个文件是否相同
//只输出是否相同,如果相同则没有输出,如果不同则输出Files file1 and file2 differ
diff -q file1 file2
//输出数据不相同的行
diff file1 file2
14. 统计文件行数
cat file | wc -l
15. 统计文件中数据信息
cat file | uniq -c > file2_name
16. 输出文件的信息
//head默认输出文件前10行
head file
//输出所需要的行数
head -n Num file
//输出除了后Num行的所有数据
head -n -N file
//输出文件所有内容
cat file
17. 设置环境变量
临时设置: export XXXX=num
永久设置: 在~./bashrc的最后加上export XXXX=num,然后source ~./bashrc
cd可以直接返回~目录
二、错误原因及解决方案
2.1 A single input file is required for a non-link phase when an outputfile is specified
编译文件的某个路径的破折号 / 不对
多填了 / 或者中文字符的 / 等
2.2 make: /usr/local/cuda/bin/nvcc: Command not found
表示路径/usr/local/cuda/bin下没有nvcc命令,可以使用which nvcc查看当前环境中命令所在位置,修改makefile文件
2.3 segment fault(core dumped)
一个原因是程序中有超出边界范围的数据访问
一个原因是程序没出错,但是需要的内存较大,超出系统默认的堆栈配置
ulimit -s unlimited
ulimit -c unlimited
//配置之后还报错,且程序没有问题的话,可以反复执行程序
//使用ulimit -a 可以查看配置信息
2.4 /usr/bin/ld: cannot find -lnuma
在程序提交到服务器的计算节点编译完成后的链接过程报错
在登录节点make一下就可以
持续更新ing~