如何在启动一次后在Solaris中运行脚本

时间:2015-03-23 14:58:48

标签: solaris

我正在寻找运行shell脚本的正确方法,首先启动Solaris。 我需要运行resize命令,有一个我的脚本

#!/bin/sh -ux
echo "#!/bin/sh -ux" > /etc/rc3.d/S90scale
echo "/sbin/zpool set autoexpand=on rpool" >> /etc/rc3.d/S90scale
echo "/sbin/zpool online -e rpool c1d0" >> /etc/rc3.d/S90scale
echo "rm /etc/rc3.d/S90scale" >> /etc/rc3.d/S90scale
echo "/sbin/shutdown -y -i6 -g0" >> /etc/rc3.d/S90scale
chmod a+x /etc/rc3.d/S90scale

实际上脚本工作正常,但不幸的是调整大小不起作用。当我从用户会话中做同样的事情时,一切都很好。

我究竟做错了什么?

1 个答案:

答案 0 :(得分:2)

在使用传统方法时,您的方法不是在启动后运行脚本的“正确”方法。正确的方法是创建smf service that runs once。但是,无论如何,它仍然可以作为rc脚本使用Solaris 10和11,但是已经过处理,因此我不会详细说明smf

主要问题是您不检查错误以及发生的任何事情,它会删除脚本并重新启动以防止发生任何分析。

我建议修改你的脚本来记录文件中发生的事情并退出错误:

#!/bin/ksh
cat > /etc/rc3.d/S90scale <<%EOF%
exec > /var/tmp/S90scale.log 2>&1 # logs everything to file
set -xe                           # show commands and exits on error
/sbin/zpool set autoexpand=on rpool
/sbin/zpool online -e rpool c1d0
mv /etc/rc3.d/S90scale  /etc/rc3.d/_S90scale
/sbin/shutdown -y -i6 -g0
%EOF%
chmod a+x /etc/rc3.d/S90scale

下次重新启动完成后,您应该查看/var/tmp/S90scale.log文件,并可能在那里看到错误消息。