文档章节

文件描述符再述之 initscript 和 systemd

anglix
 anglix
发布于 2015/11/03 14:58
字数 454
阅读 254
收藏 3

服务的 ulimit 设置无效

设定 文件描述符

  • /etc/security/limits.conf 内容:
* soft nproc 10000
* hard nproc 10000
* soft nofile 4194304
* hard nofile 4194304
  • /etc/sysctl.conf 片段:
fs.nr_open = 5242880
fs.file-max = 4194304
  • /etc/profile.d/ulimit.sh 内容:
#!/bin/bash
[ "$(id -u)" == "0" ] && ulimit -n 4194304
ulimit -u 80000
  • /etc/pam.d/login 下相关文件片段
session     required      pam_limits.so

service启动的服务,Runtime文件描述符仍是1024? :joy:

grep 'open files' /proc/$(pgrep cron)/limits
# Max open files            1024                 4096                 files 

SysV的系统设定(CentOS6/Debian7)

initscript

示例

# cat /etc/initscript 
ulimit -n 1048576
eval exec "$4"

Systemd系统的设定(CentOS7/Debian8)

systemd 应么写? :joy:

  • systemd怎么写

systemd 怎么用?

服务启停,与 service 的对应关系。以 cron 服务为例

systemctl start cron # service cron start
systemctl stop cron # service cron stop
systemctl restart cron # service cron restart
systemctl try-restart cron # service cron condrestart
systemctl reload cron # service cron reload
systemctl status cron # service cron status
systemctl is-active cron # service cron status
systemctl list-units --type service --all # service --status-all

开机启动,与 chkconfig 的对应关系。以 cron 服务为例:

systemctl enable cron # chkconfig cron on
systemctl disable cron # chkconfig cron off
systemctl status cron # chkconfig --list cron
systemctl is-enabled cron # chkconfig --list cron
systemctl list-unit-files --type service # chkconfig --list

修改 systemd 对应的配置

  • Debug 时你会发现,最终脚本执行过程被重定向到 systemd里了:
bash -x /etc/init.d/cron restart
+ . /lib/lsb/init-functions
+++ run-parts --lsbsysinit --list /lib/lsb/init-functions.d
++ . /lib/lsb/init-functions.d/20-left-info-blocks
++ . /lib/lsb/init-functions.d/40-systemd
++++ systemctl -p CanReload show cron.service
+++ systemctl_redirect /etc/init.d/cron restart
+++ log_daemon_msg 'Restarting cron (via systemctl)' cron.service
+++ /bin/systemctl restart cron.service
  • 修改 systemd 对应的配置文件 /etc/systemd/system.conf/etc/systemd/user.conf
sed -i 's/^#DefaultLimitNOFILE=$/DefaultLimitNOFILE=1048576/g' /etc/systemd/system.conf /etc/systemd/user.conf # 重启系统生效

调试 systemd

  1. 修改 /etc/default/grub 配置:
GRUB_CMDLINE_LINUX="systemd.log_target=kmsg systemd.log_level=debug"
# update-grub # 更新后重启系统
  1. 修改 /etc/systemd/system.conf 配置:
LogLevel=debug   
LogTarget=kmsg
  1. 重启后使用 dmesg 即可查看。

© 著作权归作者所有

共有 人打赏支持
anglix

anglix

粉丝 31
博文 35
码字总数 17615
作品 0
珠海
系统管理员
私信 提问
Archlinux systemd 开机执行rc.local

Archlinux 替换initscript 为systemd方式后,许多服务启动方式已经发生变化。原来的/etc/rc.local已经消失,并被建议使用tmpfiles.d方式替换。但是有些操作tmpfiles.d无法替代。 需要手动写一...

刘少
2013/01/16
0
1
关于图形界面下Ubuntu的max file open 值

正常在Linux下,对最多打开的文件描述符的限制设置有两个地方: 是全局最多可打开文件描述符设置 是单进程最多可打开的文件描述符设置 全局的修改比较容易,只需要在中添加并指定值即可,如....

Swire
08/13
0
0
Ceph v10.2.4 发布,分布式存储系统

Ceph v10.2.4 发布了。Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开 ...

局长
2016/12/07
1K
1
OpenVPN配置错误导致不能正常升级

报错 Setting up procps (2:3.3.9-9+deb8u1) ... Job for systemd-sysctl.service failed. See 'systemctl status systemd-sysctl.service' and 'journalctl -xn' for details. invoke-rc.d:......

破旧的大卡车
11/01
0
0
Javascript文件加载:LABjs和RequireJS

传统上,加载Javascript文件都是使用

阮一峰
2011/10/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部