如何在Shell中后台启动并启用dump文件
在Linux中,如果我们需要在后台运行程序,并且还希望生成dump文件,这可能会比较麻烦。但是我们可以通过使用一个批处理脚本来解决这个问题。
步骤1:设置输出目录
首先,我们需要设置一个输出目录来存储程序的输出和dump文件。我们可以使用以下命令创建一个名为"out"的目录:
```shell
nohupath"out/"
if [ ! -d $nohupath ]; then
mkdir $nohupath
fi
```
步骤2:设置coredump输出目录
接下来,我们还需要设置一个coredump输出目录来存储生成的dump文件。我们可以使用以下命令创建一个名为"corefile"的目录,并将权限设置为777:
```shell
corepath"corefile/"
if [ ! -d $corepath ]; then
mkdir $corepath
chmod 777 $corepath
fi
```
步骤3:设置coredump文件名
我们可以使用以下命令来设置coredump文件的命名方式:
```shell
echo -e $corepath"core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
```
其中,以下参数将会被替换为相应的值:
- %e – 程序文件名
- %s – 生成core文件时收到的信号
- %u – 进程用户id
- %g – 进程用户组id
- %p – 进程号
- %t – 生成core文件的时间戳(从1970年1月1日0点开始的秒数)
- %h – 主机名
步骤4:设置core文件名后缀
我们可以使用以下命令来设置core文件名的后缀:
```shell
echo -e "1" > /proc/sys/kernel/core_uses_pid
```
这将在core文件名中添加进程号作为后缀。
步骤5:启动程序并重定向输出
最后,我们可以使用以下命令来在后台启动程序,并将输出重定向到之前设置的输出目录中:
```shell
nohup ./$1 >$nohupath$1$time'.log' 2>1
```
这将在后台启动名为$1的程序,并将输出保存为"$nohupath$1$time.log"文件。
步骤6:生成dump文件
为了能够生成dump文件,我们还需要使用以下命令来设置当前终端的限制:
```shell
ulimit -c unlimited
```
这将允许当前终端生成dump文件。
通过按照以上步骤操作,我们可以在Shell中后台启动程序,并且启用dump文件来进行问题排查和调试。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。