(注:如若记忆没有出现偏差,本文应是写于2015年,楼主习惯使用LaTeX写笔记,后发现markdown不错,于是稍有修改后发布与此。)
(下文中的所有命令需要以root权限执行)
(Debian下载地址[1])
前言
这部分内容是对前面内容简略部分的补充。
一、邮件设置
这里使用的软件为 msmtp,该软件小巧且易于配置。邮箱客户端软件用的是 mutt,该软件同样小巧,但是功能强大。
Tips:一般系统提供了 mail、 mutt、 sendmail 等工具,有时候系统提供的 sendmail 工具指向了其它的 mail 服务软件,例如在 Debian 8.3 中, sendmail 是 exim4 这个软件的一个软链接,而 mail 命令来自于 bsd-mailx。
1.1 mail配置
mail 会读取/etc/目录下的 mail.rc 文件,或者读取用户家目录下的.mailrc 文件。但是 mail 似乎不能自定义配置文件的位置,在某些情况下会导致不便。可以在 mail.rc 文件中增加一行,使用msmtp 发送邮件。
set sendmail="/usr/bin/msmtp"
1.2 msmtp配置文件
mutt会读取/etc/目录下的Muttrc文件,或读取用户家目录下的.muttrc文件,也可以用-F参数指定配置文件。一个示例如下:
account default
host smtp.126.com <-- smtp服务器
port 25 <-- smtp服务器端口
from [email protected]
auth login
user [email protected] <-- 邮箱
password xxxx <-- 密码
logfile /root/Mail/Log/msmtp.log <-- 日志位置
1.3 mutt配置
mutt会读取/etc/目录下的Muttrc文件,或读取用户家目录下的.muttrc文件,也可以用-F参数指定配置文件。一个示例如下:
set from="[email protected]" <-- 发件人
set sendmail="/usr/bin/msmtp" <-- 使用msmtp发送邮件
set use_from=yes
set realname="张三"
set editor="vim" <-- 发送邮件使用的文本编辑器
在使用nagios的邮件警报功能时,可以将配置文件放在一个特定的目录下,稍微修改一下%
上述参数即可。
set from="[email protected]"
set sendmail="/usr/bin/msmtp -C /etc/nagios3/.msmtprc"
set use_from=yes
set realname="Nagios3 警报"
set editor="vim"
然后将发送邮件的命令改为:/usr/bin/mutt -F /etc/nagios3/.muttrc
。不过需要注意的是,要保证两份配置文件对nagios进程的拥有者是可读取的,例如默认情况下,Debian 8.x中nagios是以nagios用户和nagios组权限执行的。当然也可以将配置文件放置在nagios进程的拥有者的家目录底下,此时使用mail命令也可。
二、日志
2.1 相关要点
2.1.1 日志文件的意义
一些常用到的日志文件的作用如下:
- /var/log/boot.log:开机启动信息。
- /var/log/cron:与 crontab 日程相关。
- /var/log/dmesg:开机核心信息。
- /var/log/lastlog:二进制文件,记录所有账号最近一次登录信息,使用lastlog命令读取。
- /var/log/mail/*:邮件相关的日志。
- /var/log/messages:与系统相关的重要信息。
- /var/log/secure:与账号密码相关的信息会记录在这个日志文件中,所以这个文件和安全直接相关。
2.1.2 日志文件的格式
日志文件一般按下述顺序输出:
- 日志的日期与时间;
- 相关的主机名;
- 相关的程序的名字;
- 日志内容。
2.1.3 信息的等级
日志输出的信息分成不同的等级,下表列出了不同等级信息的意义:
等级 | 名称 | 意义 |
---|---|---|
0 | emerg | 硬件级别的严重错误。 |
1 | alert | 警告,遇到严重问题。 |
2 | crit | 遇到严重错误,面临崩溃。(在第一篇中,硬件温度信息输出有此项。) |
3 | err | 程序遇到错误,一般是软件级别的。 |
4 | warning | 警告信息,比如软件可能会不适用之类的,一般不会影响运行。 |
5 | notice | 提醒软件运行过程中可能需要注意的信息。 |
6 | info | 基本信息,方便回溯软件运行。 |
7 | debug | 辅助debug使用。 |
(关于输出信息的分类,熟悉Android开发的小伙伴必然知道,Android的Log类就可以将开发过程中的不同信息分类输出,而且调试的时候可以使用过滤器提取不同类别的信息。)
2.1.4 logrotate日志轮替
Linux中的日志一般是采用如下的方式:
a.log → a1.log → a2.log ...
最新的日志存入a.log,将较老的日志往后面的文件存储。logrotate的配置文件在/etc/logrotate.conf和/etc/logrotate.d/目录中。可以配置日志的存储数目和是否采用压缩等。
2.2 Debian 8.x日志
Debian 8.x 系统的/etc/rsyslog.conf 文件内容如下:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
*.emerg :omusrmsg:*
daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
Tips:这里需要注意的是:/var/log/auth.log 记录了用户认证登录的敏感信息,而不是像CentOS系统一样记录在/var/log/secure文件中。
2.3 保护日志
若系统被入侵,为了隐藏踪迹,通常会将/var/log/目录恶意删除。为此可以采取将日志文件定时备份到远程系统等措施,防止查找不到攻击源。另外,可以还可以将bash的history记录备份。
三、systemd
3.1 system V启动顺序
以往system V模式系统启动顺序是:
- boot loader(例如grub等)加载内核,内核加载硬件驱动程序之后,启动init程序;
- init取得run-level信息,执行/etc/rc.d/rc.sysinit下的脚本;
- 0:halt,关机
- 1:single user mode,单用户模式
- 2:Multi-user,without NFS,无网络支持的多用户模式;
- 3:Full multi-user mode,有网络支持的多用户模式;
- 4:unused,系统保留功能,未使用;
- 5:X11,有网络支持有X-Window支持的多用户模式
- 6:reboot,即重启
- 根据run-level信息,执行相应level下的脚本,例如等级3的脚本在rc3.d目录下;
- 执行/etc/rc.d/rc.local脚本;
- 启动login。
3.2 systemd启动顺序
在systemd中,各种服务的依赖关系被理清,如此一来,系统可以同时启动没有依赖关系的不同服务,加快开机速度。
和System V模式类似,只是内核在加载完硬件驱动程序后,启动的是systemd,默认执行的是default.target流程:
- 执行sysinit.target初始化系统;
- 执行multi-user.target启动本机服务;
- 执行multi-user.target下的/etc/rc.d/rc.local文件;
- 执行getty.target及登录服务;
- 执行图形服务。
前面我们提到,使用脚本设置防火墙服务,并使脚本可以开机自动启动。在debian 8.x中,/etc/init.d/rc.local会调用/etc/rc.local,可以在这个文件中配置开机启动服务。不过通过配置unit可以通过systemctl管理,前面也是采用这种方式。
3.3 systemctl命令
systemd通过systemctl命令管理各种服务。
systemctl命令管理服务的使用方式如下:
systemctl 命令 [unit]
命令 | 意义 |
---|---|
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
reload | 重新载入服务,一般是服务的配置更改了以后使用 |
enable | 设置开机启动服务 |
disable | 开机不会启动该服务 |
mask | 注销服务 |
unmask | 取消注销服务 |
status | 查看服务的状态 |
is-active | 服务是否正在运行 |
is-enable | 服务是否开机启动 |
使用systemctl查看系统服务的命令如下:
systemctl 命令 [类别] [--all]
命令 | 意义 |
---|---|
list-units | 列出启动的所有unit |
list-unit-files | 列出/usr/lib/systemd/system/的文件 |
这里所说的类别指的是服务类型,一般分类如下:
类型 | 功能 |
---|---|
.service | 常见的服务 |
.socket | 与数据交换相关 |
.target | unit集合 |
.mount .automount | 与文件系统挂载相关 |
.path | 与文件类型检查有关 |
.timer | 循环执行的服务,例如备份、安全更新的服务等 |
四、其他
4.1 Intel Parallel XE Studio
4.1.1 安装XE
这里选择Intel Parallel XE Studio Cluster Edtion,因为该版本包含了MPI库的内容。* (官网上可以申请一年使用的License)*。
查看安装帮助可知,安装可以使用静默方式,事先用虚拟机安装一遍,可以得到配置文件,安装命令为:./install.sh -d ./autoInstall.cfg
。该文件内容为:
ACCEPT_EULA=accept
INSTALL_MODE=NONRPM
CONTINUE_WITH_OPTIONAL_ERROR=yes
PSET_INSTALL_DIR=/opt/intel
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
PSET_MODE=install
ACTIVATION_LICENSE_FILE=/media/sf_share/XE2015/Crack/zwt.lic
ACTIVATION_TYPE=license_file
AMPLIFIER_SAMPLING_DRIVER_INSTALL_TYPE=build
AMPLIFIER_DRIVER_ACCESS_GROUP=vtune
AMPLIFIER_DRIVER_PERMISSIONS=666
AMPLIFIER_LOAD_DRIVER=yes
AMPLIFIER_C_COMPILER=/usr/bin//gcc
AMPLIFIER_KERNEL_SRC_DIR=/lib/modules/3.16.0-4-amd64/build
AMPLIFIER_MAKE_COMMAND=/usr/bin//make
AMPLIFIER_INSTALL_BOOT_SCRIPT=yes
AMPLIFIER_DRIVER_PER_USER_MODE=no
ENVIRONMENT_LD_SO_CONF=no
MPSS_RESTART_STACK=no
PHONEHOME_SEND_USAGE_DATA=no
COMPONENTS=;intel-mpi-rt__noarch;... ... 一系列组件
接下来就可以使用该文件进行静默安装,命令为:./install.sh -s autoInstall.cfg
。这样就省去了以后安装需要交互操作的麻烦。
安装完毕后,还需要配置用户环境。将以下内容加入/etc/profile文件中即可。
source /opt/intel/bin/compilervars.sh intel64
source /opt/intel/impi/5.0.1.035/bin64/mpivars.sh
source /opt/intel/mkl/bin/mklvars.sh intel64 ilp64
4.1.2 Fortran并行测试
接下来对一个简单的Fortran程序进行并行测试。
文件:hello.f90
program main
use mpi
implicit none
integer :: id, err, comm, psize
call MPI_INIT( err )
call MPI_COMM_DUP( MPI_COMM_WORLD, comm, err )
call MPI_COMM_RANK( comm, id, err )
call MPI_COMM_SIZE( comm, psize, err )
write(*,*) id, psize, " hello"
call MPI_BARRIER( comm, err )
call MPI_FINALIZE( err )
end program
编译:
mpiifort -o main hello.f90
执行:
mpirun -np 4 ./main
这里需要注意可执行文件的路径,即这里的“./”不要漏了。
3 4 hello
0 4 hello
2 4 hello
1 4 hello
-
http://cdimage.debian.org/cdimage/archive/ ↩