当我关闭我的电脑时,我正在运行一个脚本。我正在运行一个ubuntu 14.04,我在“/etc/init.d/”中有我的脚本“save_log.sh”。此脚本具有执行权限(sudo chmod + x /etc/init.d/save_log.sh)。我还在“/etc/rc0.d/”中创建了一个带有目标“/etc/init.d/save_log”的链接。
我已经测试过这个脚本在关闭我的笔记本电脑(一块但正在运行)时正在运行。
我正在尝试保存日志文件并上传到S3(亚马逊网络服务)。对于此任务,我正在使用具有特定文件名的所有日志文件制作“tar.gz”。此文件名取决于服务器(或笔记本电脑)的IP。
当我在我的控制台中运行此脚本时,工作成功,文件创建的文件名为内容IP(我的笔记本电脑),此文件上传到S3。当我关闭笔记本电脑时,文件已创建,但名称没有IP,文件也没有上传。
我已为此脚本创建了一个日志,并为ifconfig命令添加了输出:
ifconfig:lo link encap:Local Loopback inet addr:127.0.0.1 掩码:255.0.0.0 inet6 addr ::: 1/128范围:主机上传循环运行 MTU:65536公制:1个RX数据包:6432错误:0丢弃:0超限:0 帧:0 TX包:6432错误:0丢弃:0溢出:0载波:0 冲突:0 txqueuelen:0 RX字节:1159509(1.1 MB)TX字节:1159509 (1.1 MB)
此输出没有网络IP。在runlevel0中,是否已禁用网络?可以激活吗?有什么想法来解决这个问题吗?
更新
我的/etc/rc0.d/(ubuntu 14.04)中的内容:
eltortuganegra@eltortuganegra:~$ ll /etc/rc0.d/
total 20
drwxr-xr-x 2 root root 4096 jun 11 16:31 ./
drwxr-xr-x 152 root root 12288 jun 12 09:07 ../
lrwxrwxrwx 1 root root 24 jun 11 13:29 K01save_logs -> /etc/init.d/save_logs.sh*
lrwxrwxrwx 1 root root 17 jun 9 10:27 K09apache2 -> ../init.d/apache2*
lrwxrwxrwx 1 root root 29 jun 9 10:14 K10unattended-upgrades -> ../init.d/unattended-upgrades*
lrwxrwxrwx 1 root root 20 jun 9 10:14 K20kerneloops -> ../init.d/kerneloops*
lrwxrwxrwx 1 root root 19 jun 9 11:35 K20memcached -> ../init.d/memcached*
lrwxrwxrwx 1 root root 15 jun 9 10:14 K20rsync -> ../init.d/rsync*
lrwxrwxrwx 1 root root 27 jun 9 10:14 K20speech-dispatcher -> ../init.d/speech-dispatcher*
lrwxrwxrwx 1 root root 22 jun 11 11:07 K21spamassassin -> ../init.d/spamassassin*
-rw-r--r-- 1 root root 353 mar 13 02:33 README
lrwxrwxrwx 1 root root 18 jun 9 10:14 S20sendsigs -> ../init.d/sendsigs*
lrwxrwxrwx 1 root root 17 jun 9 10:14 S30urandom -> ../init.d/urandom*
lrwxrwxrwx 1 root root 22 jun 9 10:14 S31umountnfs.sh -> ../init.d/umountnfs.sh*
lrwxrwxrwx 1 root root 18 jun 9 10:14 S40umountfs -> ../init.d/umountfs*
lrwxrwxrwx 1 root root 20 jun 9 10:14 S60umountroot -> ../init.d/umountroot*
lrwxrwxrwx 1 root root 14 jun 9 10:14 S90halt -> ../init.d/halt*
我在Debian发行版中修改了rc0.d目录并找到了:
K06networking - > ../的init.d /网络
我想这是为停止网络执行的链接,但在我的Ubuntu中,此链接不存在。我想如果我用K07下的数字重命名我的链接,那么网络将被启用,我的脚本“save_logs.sh”将正常运行。
我如何知道何时禁用网络或如何在禁用网络之前执行我的脚本?
答案 0 :(得分:0)
是网络将被禁用。您需要在禁用网络之前运行脚本。它通常会在您启动的同一运行级别中禁用自身。
作为SUSE linux系统的示例,请查看:
test01:/etc/rc.d # ls -latd *rc*/*network*
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc2.d/K17network -> ../network
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc2.d/S05network -> ../network
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc3.d/K17network -> ../network
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc3.d/S05network -> ../network
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc5.d/K17network -> ../network
lrwxrwxrwx 1 root root 10 Feb 3 2009 rc5.d/S05network -> ../network
test01:/etc/rc.d #
(您的目录可能因您使用的Linux而异)
您会注意到网络脚本的启动和停止处于同一运行级别。在我的情况下,如果我启动到运行级别3,则启动和停止发生在运行级别3.开始是S05,停止是K17。
事情按数字顺序运行,所以如果我在运行级别3的机器上运行你的日志记录脚本,我想把它放在K16。
或者为了安全起见,我将为所有三个运行级别创建日志记录脚本
rc2.d/K16logging
rc3.d/K16logging
rc5.d/K16logging
这有帮助吗?