这种服务的启动方式则是藉由一个统一的 daemon 来负责唤起服务,这个特殊的 daemon 就被称为 super daemon
当没有客户端的请求时,各项服务都是未启动的情况,等到有来自客户端的要求时, super daemon 才唤醒相对应的服务,当客户端的请求结束后,被唤醒的这个服务也会关闭并释放系统资源,这种模式的运行示意图如下
这种模式的优缺点:
super daemon 的处理模式有两种,分别是这样:
以 daemon 提供服务的的工作状态来区分,又可以将 daemon 分为两大类
守护进程(daemon)命名守则:就是在与原有的单词后面加上一个 d
/etc/services
啦,不过这个东西最好不要随便改,因为都是遵循互联网的协议的/etc/init.d/*
:启动脚本放置处/etc/sysconfig/*
:各服务的初始化环境配置文件/etc/xinetd.conf, /etc/xinetd.d/*
:super daemon 配置文件/var/lib/*
:各服务产生的数据库/var/run/*
:各服务的程序之 PID 记录处/etc/init.d/*
目录下寻找相关的启动脚本来启动服务参考文章:
systemctl使用指南:CentOS 7.x systemd对比CentOS 6.x daemon
Linux中的两种守护进程stand alone和xinetd
最简明扼要的 Systemd 教程,只需十分钟
/usr/lib/systemd
里面查看,下级目录分别有system和user放置系统和用户的unit 配置文件cat sshd.service
可以得到下面的内容,可以看到配置文件分为 unit、service和install三个部分[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
unit 部分:启动顺序与依赖关系
service 部分:启动行为
install 部分
相关命令
=> 查看系统默认的 target
systemctl get-default
=> 查看 multi-user.target 包含的所有服务
systemctl list-dependencies multi-user.target
=> 切换到另一个 target
sudo systemctl isolate shutdown.target
[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
=> 重新加载配置文件
sudo systemctl daemon-reload
=> 重启相关服务
sudo systemctl restart ssh
ldd /PATH/TO/PROGRAM|grep libwrap.so
/etc.hosts.allow
文件,另一个是/etc/hosts.deny
文件,这两个文件使用的时候先访问allow后访问deny,具体的工作原理如下- ALL:代表全部的 program_name 或者是 IP 都接受的意思,例如 ALL: ALL: deny
- LOCAL:代表来自本机的意思,例如: ALL: LOCAL: allow
- UNKNOWN:代表不知道的 IP 或者是 domain 或者是服务时;
- KNOWN:代表为可解析的 IP, domain 等等信息时;
只允许 140.116.0.0/255.255.0.0 与 203.71.39.0/255.255.255.0 这两个网段
和203.71.38.123 这个主机可以进入我们的 rsync 服务器;
此外,其他的 IP 全部都挡掉!
[root@www ~]# vim /etc/hosts.allow
rsync: 140.116.0.0/255.255.0.0
rsync: 203.71.39.0/255.255.255.0
rsync: 203.71.38.123
rsync: LOCAL
[root@www ~]# vim /etc/hosts.deny
rsync: ALL <==利用 ALL 配置让所有其他来源不可登陆
sshd服务不允许172.16.0.0/16,但允许172.16.1.3访问
/etc/hosts.deny
sshd : 172.16. EXCEPT 172.16.1.3
%h (hostname), %a (address), %d (daemon)
等变量[root@www ~]# vim /etc/hosts.deny
rsync : ALL: spawn (echo "security notice from host $(/bin/hostname)" ;\
echo; /usr/sbin/safe_finger @%h ) | \
/bin/mail -s "%d-%h security" root & \
: twist ( /bin/echo -e "\n\nWARNING connection not allowed.\n\n" )
ps
来观察整个系统上面的所有服务是比较妥当的netstat
来查阅啦systemctl enable xxxx
就可以设置开机自启了ntsysv
就可以进入类图形接口来管理服务的开机启动注意:在不同的发行版中,各个日志文件的名字可能不一定相同
rsyslogd
这个服务来完成的,配置文件是 /etc/rsyslog.conf
-
代表日志先写入缓冲区,再写入日志文件:omusrmsg:*
代表以广播的方式通知所有的人. .= .!
分别代表高于该等级(含)记录日志,等于这个等级进行日志记录、不等于该等级进行记录vim /etc/sysconfig/rsyslog
,配置SYSLOGD_OPTIONS="-m 0 -r"
/etc/init.d/syslog restart
netstat -lunp | grep syslog
vim /etc/syslog.conf
*.* @192.168.1.100 => 下面的 IP 就是服务器的地址
# 底下的配置是 "logrotate 的默认配置值"
weekly <==默认每个礼拜对登录文件进行一次 rotate 的工作
rotate 4 <==保留几个登录文件呢?默认是保留四个!
create <==由於登录文件被更名,因此创建一个新的来继续储存之意!
#compress <==被更动的登录文件是否需要压缩?如果登录文件太大则可考虑此参数启动
# 将 /etc/logrotate.d/ 这个目录中的所有文件都读进来运行 rotate 的工作!
include /etc/logrotate.d
# 这个是针对个别文件的配置
/var/log/wtmp { <==仅针对 /var/log/wtmp 所配置的参数
monthly <==每个月一次,取代每周!
minsize 1M <==文件容量一定要超过 1M 后才进行 rotate (略过时间参数)
create 0664 root utmp <==指定新建文件的权限与所属帐号/群组
rotate 1 <==仅保留一个,亦即仅有 wtmp.1 保留而已。
}
# vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler \
/var/log/boot.log /var/log/cron {
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
/usr/bin/chattr +a /var/log/messages
endscript
}
[root@www ~]# chattr +a /var/log/admin.log
[root@www ~]# lsattr /var/log/admin.log
[root@www ~]# mv /var/log/admin.log /var/log/admin.log.1 ==>测试 a 是否起作用
[root@www ~]# vi /etc/logrotate.d/admin
/var/log/admin.log {
monthly <==每个月进行一次
size=10M <==文件容量大於 10M 则开始处置
rotate 5 <==保留五个!
compress <==进行压缩工作!
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/admin.log
endscript
sharedscripts
postrotate
/usr/bin/killall -HUP syslogd
/usr/bin/chattr +a /var/log/admin.log
endscript
}
[root@www ~]# logrotate -vf /etc/logrotate.d/admin
[root@www ~]# lsattr /var/log/admin.log*
logwatch
logwatch --detail low
即可进行日志文件的分析