当系统部署时常常需要修改目标系统的文件句柄数,如果安装的机器比较多容易忘记,这时候在应用的安装脚本中自动修改是个更好的选择,这里写了个脚本备用免得以后再去想正则表达式。在CentOS5.4下测试通过。
#cat install.sh
#/bin/bash
if [ `whoami` = root ]
then
echo "install..."
echo "set limit nofile..."
LIMIT_FILE=/etc/security/limits.conf
if grep "^\* *soft *nofile *[0-9]*" $LIMIT_FILE > /dev/null
then
sed 's/^\* *soft *nofile *[0-9]*/\* soft nofile 10240/' $LIMIT_FILE > limits.conf.temp
mv limits.conf.temp $LIMIT_FILE
else
echo '* soft nofile 10240' >> $LIMIT_FILE
fi
if grep "^\* *hard *nofile *[0-9]*" $LIMIT_FILE > /dev/null
then
sed 's/^\* *hard *nofile *[0-9]*/\* hard nofile 32768/' $LIMIT_FILE > limits.conf.temp
mv limits.conf.temp $LIMIT_FILE
else
echo '* hard nofile 32768' >> $LIMIT_FILE
fi
echo "chown run dir..."
chown crust.crust /home/crust/run
chmod a+x start stop showapps
cp autostart.in /etc/rc.d/init.d/crust
chmod a+x /etc/rc.d/init.d/crust
echo "add crust autostart script"
/sbin/chkconfig --add crust
echo "add crust as system service"
chmod u+x ./so/config_so_ld.sh
./so/config_so_ld.sh
else
echo "ERROR: please use root user run the script !!!!!!!"
fi
脚本中首先搜索 /etc/security/limits.conf 中是否包含句柄数配置,没有的话直接在后面添加,已有配置则用sed进行替换。脚本后面还干了两件事顺带提一下:将应用配置成服务、注册动态库。
#cat autostart.in
#!/bin/bash
# Init file for crust daemon
# chkconfig: 35 99 01
# description: crust
# processname: erl
#
export HOME=/home/crust/run
start()
{
cd $HOME
echo "[START] " `date` >> start.log
touch /var/lock/subsys/crust >/dev/null 2>&1
su curst -c ./start >/dev/null 2>&1
}
stop()
{
cd $HOME
echo "[STOP] " `date` >> start.log
rm -f /var/lock/subsys/crust >/dev/null 2>&1
su crust -c ./stop >/dev/null 2>&1
}
case "$1" in
start) start;;
stop) stop;;
esac
#cat config_so_ld.sh
#!/bin/bash
if [ `whoami` = root ]
then
echo /home/crust/run/so > /etc/ld.so.conf.d/crust.conf
echo "add config file to /etc/ld.so.conf.d"
/sbin/ldconfig
echo "reconfig ld"
else
echo "please use root user run the script"
fi
分享到:
相关推荐
1. **文件句柄监视**:创建一个文件句柄并设置特定的通知过滤器,如FILE_NOTIFY_CHANGE_FILE_NAME, FILE_NOTIFY_CHANGE_SIZE等,当文件发生指定的更改时,系统将发送一个通知到预先注册的回调函数。 2. **文件系统...
如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法 call [Drive:][Path] FileName [BatchParameters] [:label [arguments] 参数 [Drive:}[Path] FileName 指定要调用的批处理程序的位置和名称...
- 自动化脚本:在自动化脚本中,可以利用`rarfile`来解压配置文件或依赖库。 综上所述,`rarfile`库为Python开发者提供了处理RAR文件的强大工具,无论是解压缩还是获取文件信息,都能方便快捷地完成。在实际项目中...
- **使用场景**: 开发者在安装或部署包含OCX控件的应用程序时。 #### 11. Ellipse() - **功能**: 在指定区域内绘制椭圆。 - **使用场景**: 图形界面设计、绘图软件等。 #### 12. ExitWindowsEx() - **功能**: 通知...
- **使用场景**: 需要将资源文件(如图片、音频等)打包在应用程序内部时。 **44. 修改演示时编译器窗口的字体大小** - **功能**: 调整编译器窗口的字体大小。 - **使用场景**: 改善代码的可读性和美观度。 **...
- **`addslashes`**:在字符串中添加反斜杠。 - **`chop`**:删除字符串结尾的空白字符。 - **`chr`**:返回指定ASCII值对应的字符。 - **`eval`**:执行字符串中的PHP代码。 - **`explode`**:使用分隔符将字符串...
在编写自动安装程序时,还需要用到其他几个重要的API函数,例如: 1. `GetVersion`:获取当前Windows系统版本的信息,这对于确定输入法文件的存放位置和选择合适版本的文件至关重要。 2. `CopyFile`:用于复制输入法...
### AutoIT常用函数详解 #### 一、数学与逻辑运算函数 **1. Abs** - **功能**: 求某个数的绝对值。 - **示例**: `Abs(-5)` 返回 5。 **2. ACos** - **功能**: 求某个数的反余弦值(arcCosine)。 - **示例**: `ACos...
- `-l`: 懒惰卸载,允许文件系统在没有活动文件句柄的情况下被卸载。 - **命令说明**:`umount` 命令用于卸载已挂载的文件系统,释放系统资源。 ##### 8. chsh - **作用**:更改用户的登录 shell。 - **格式**:`...
- **自动化脚本**: 在批处理脚本或VBScript中,利用该函数实现自动化任务,如批量修改文件属性。 #### 四、注意事项 - 在调用 `ShellExecuteEx` 之前,确保正确初始化 `SHELLEXECUTEINFO` 结构体的所有字段。 - ...
在IFIX这个强大的人机界面(HMI)组态软件中,VBA(Visual Basic for Applications)代码被广泛用于实现各种自定义功能,提高操作...在实际应用中,可以根据具体需求对这些代码进行修改和扩展,以满足不同项目的需求。
- **<、>&、**:用于输入重定向或文件句柄操作。 - **|**:命令管道符,用于将一个命令的输出作为另一个命令的输入。 - **^**:转义字符,用于转义某些特殊字符。 - **&** 和 **&&**:分别用于并列命令或条件执行...
2. **修改最大文件句柄数**: ``` ulimit -n 4096 ``` 将最大文件句柄数设置为 4096。这对于需要打开大量文件的应用程序非常有用,比如 Web 服务器或数据库服务器。 3. **设置最大核心文件大小**: ``` ...
AU3控件信息获取工具是一种自动化测试和脚本编写中常用的辅助软件,主要针对Windows操作系统上的应用程序用户界面(UI)控件进行信息检测和提取。该工具基于AutoIt(AU3)编程语言,AutoIt是一种轻量级、易学易用的...
- `fclose(fid)` 用于关闭文件句柄。 3. **文件关联**: - `associateFiles.m` 可能创建一个关联,将特定文件类型与MATLAB脚本或函数绑定,使得双击这类文件会自动用MATLAB打开并执行相应代码。 - 在Windows系统...
- **ATTRIB 显示或更改文件属性**:用于修改文件的属性。 **1.2 常用特殊符号** - **@**:命令行回显屏蔽符,用于隐藏命令执行。 - **%**:批处理变量引导符,用于引用变量。 - **>** 和 **>>**:重定向符,用于将...
10. **Test.rc**:资源脚本文件,定义了应用程序的资源,如菜单、图标和消息框。消息框的文本和样式通常在这里定义。 在C++中,创建消息框通常使用Windows API的`MessageBox`函数,例如: ```cpp int result = ...
在函数执行过程中,首先打开指定路径的文件,并获取文件当前的时间属性,然后使用SetFileTime函数设置新的时间属性,最后关闭文件句柄完成操作。 示例代码中的main函数部分展示如何调用modifyFileTime函数来修改一...