2018-07-09(关于环境变量和系统日志查看)
今天下午学习转录组分析的时候,出现程序被killed,一查才发现原来是内存不够,一怒之下买了个12核,24G的云服务器。
新买的服务器下载东西的时候总是要考虑环境变量,之前学过,但总是跟着文档设置,这次自己设置一下,也算是熟练掌握和理解了。
首先我在用户目录下的soft文件中写了一个简单的bash脚本temp.sh
#!/bin/bash
echo "i love u"
然后直接输入temp.sh
系统会报错没有这个command,这是因为当前目录并不在环境变量中
首先新购的服务器下是没有~/.bash_profile文件的,我用ls -a只找到了.bashrc,但是打开并输入:
export PATH="/home/ubuntu/soft:$PATH"
然后在命令行输入echo $PATH能看到环境变量中有当前目录,但是在命令行键入temp.sh,系统依然报错:没有这个command
分析可能的原因是~/.bashrc, 在本地登录时才会被读取,而现在是远程登陆,所以需要用~/.bash_profile
没有这个文件的话就自己建一个,然后输入export PATH="/home/ubuntu/soft:$PATH"后,并且source ~/.bash_profile后,temp.sh就可以生效了。
几个知识点提一下:
1.linux系统中程序被kill,很可能是没有内存了
2.远程登陆服务器,环境变量需要在~/.bash_profile中添加
3.source之后才能生效
4.另外写的脚本,注意一下权限的问题,不行就chmod一下
5.bash脚本中开头会有 #!/bin/bash
7.环境变量用:分割,从前往后调用
--------------------------------------------------------------------------------------------------------------------
有一点想要补充一下,开始我的程序被kill掉后,如果是centos系统,可以在/var/log/message中查看问题,可以找到是内存不够的原因
但是对于ubuntu系统,我并没有找到这个message,于是我百度了一下,看到一些人给的方法还是没有用。实际上,Ubuntu没有message一定是因为它将日志放在了别的文件中,不需要我们去人为的将message弄出来。
实际上:
基于 Debian 的系统如 Ubuntu 在 /var/log/syslog 中存储它们,而基于 RedHat 的系统如 RHEL 或 CentOS 则在 /var/log/messages 中存储它们。/var/log/kern 存储内核的错误和警告数据,这对于排除与定制内核相关的故障尤为实用。
所以报错信息可以在/var/log/kern中查找就可以了
另外
学会一个小技能,vim命令行模式下用G可以到文件底部