linux服务器使用心得

这次为了给师兄在服务器上跑程序,可是折腾了不少天。主要原因是服务器上的软件版本都太低了,所以需要在自己的目录下重新装一遍。由于是第一次接触linux服务器,装软件都花了好多时间,先装了好多个版本的matlab(因为程序对版本好像有要求,有的版本会报错),最终2015a版的可以用,但是由于要跑的程序是matlab,C混合编程的,所以还要用到C语言的编辑器-GCC,而服务器的版本又太低,所以又装了GCC,但装好后发现GCC的版本和matlab不一致,也会报错,参照https://www.mathworks.com/matlabcentral/answers/329796-issue-with-libstdc-so-6解决了。然后又装了glibc库,装glibc库时又装了ld as等工具包…
一通折腾后发现glibc库还是不能用,报了这样的错:version `GLIBC_2.14’ not found
用strings /lib64/libc.so.6 |grep GLIBC查看了系统的glibc库版本发现还是2.12的,但是明明在安装glibc的build文件夹里查看是有2.14的库的,所以现在需要做的只是要让程序查找glibc库时去build文件夹里找,而不是去系统默认的lib64里找。
有两种方法
第一种是最常用的方法,就是把lib64里libc.so.6的软链接改成指向build文件夹里的libc.so文件:
rm -r libc.so.6 (先删除lib64里的libc.so.6 )
LD_PRELOAD=/glibc-build-2.14/libc-2.14.so ln -s /glibc-build-2.14/libc-2.14.so /lib64/libc.so.6(再建立新的软链)
只是这种方法有风险,因为libc.so.6是C语言库的一个很重要的文件,删除之后系统可能会瘫痪,所以必须立即建立新的软链接。但而在我们学校的服务器不敢这么乱搞,服务器的负责人也不让在主节点上删东西。而且还有一个问题,lib64不是所有节点共享的一个文件,把主节点的软链接改了之后,在PBS管理系统上提交作业时给你分配的跑程序的节点上的软链接是不会改的,所以这个方法行不通。
第二种方法是提交作业时,在PBS脚本里增加环境变量,让程序直接查找build文件夹里的glibc2.14库,这样的话就不哟个改软链接了:
export LD_LIBRARY_PATH=/home/**/glibc-new/glibc-build-2.14:$LD_LIBRARY_PATH,只需要在PBS脚本里增加这一句就可以了。但增加的位置很关键,在这里我先是放到了整个脚本的最前面,这样倒是不会报错了,但是会造成#PBS -q 功能失效,无法更改队列,所以需要把这句话放到PBS语句的下面,程序运行语句的上面。

这里附上我的以一个PBS脚本,其实PBS脚本很简单,就是PBS语句再加上运行程序的语句,中间的那些是设定输出文件,记录信息的,可以直接拷贝。
先用vi aaa.pbs编写脚本


#PBS -N test0825
#PBS -l nodes=4:ppn=16
#PBS -q medium
#PBS -l walltime=240:00:00
#PBS -o /**/test0825.out
#PBS -e /**/test0825.err
export LD_LIBRARY_PATH=/**/glibc-new/glibc-build-2.14:$LD_LIBRARY_PATH
echo my job id is $PBS_JOBID | tee  test0825.log
echo run nodes is following: | tee -a test0825.log
cat $PBS_NODEFILE | tee  -a test0825.log

echo begin time is `date` | tee -a  test0825.log
id=`echo $PBS_JOBID|awk -F. '{print $1}' `
NP=`cat $PBS_NODEFILE|wc -l`

cd /home/**/
/home/**/mm2015/bin/matlab  -c /home/**/matlab_linux_2015a/crack_for_linux/crack/Standalone_License.lic -nodisplay -nosplash <main.m > run.log
echo end time is `date` | tee -a  test0825.log
export PATH

再用qsub aaa.pbs提交脚本,再用qstat -a查看运行状态

node307:
Req’d Req’d Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time


27864.node307 * medium test0825 19476 4 64 – 240:00:00 R 00:56:12

大功告成,完美,哈哈哈


猜你喜欢

转载自blog.csdn.net/weixin_42734823/article/details/82055824