Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行级别0执行bash脚本时禁用网络_Bash_Ubuntu_Networking_Runlevel - Fatal编程技术网

在运行级别0执行bash脚本时禁用网络

在运行级别0执行bash脚本时禁用网络,bash,ubuntu,networking,runlevel,Bash,Ubuntu,Networking,Runlevel,当我关闭电脑时,我正在运行一个脚本。我正在运行一个ubuntu 14.04,我的脚本“save_log.sh”在“/etc/init.d/”中。此脚本具有执行权限(sudo chmod+x/etc/init.d/save_log.sh)。我还在“/etc/rc0.d/”中创建了一个链接,目标是“/etc/init.d/save_log” 我已经测试过,当关闭我的笔记本电脑时,这个脚本正在运行(一个片段,但正在运行) 我正在尝试保存一个日志文件并上传到S3(AmazonWeb服务)。对于这个任务,

当我关闭电脑时,我正在运行一个脚本。我正在运行一个ubuntu 14.04,我的脚本“save_log.sh”在“/etc/init.d/”中。此脚本具有执行权限(sudo chmod+x/etc/init.d/save_log.sh)。我还在“/etc/rc0.d/”中创建了一个链接,目标是“/etc/init.d/save_log”

我已经测试过,当关闭我的笔记本电脑时,这个脚本正在运行(一个片段,但正在运行)

我正在尝试保存一个日志文件并上传到S3(AmazonWeb服务)。对于这个任务,我将使用具有特定文件名的所有日志文件创建一个“tar.gz”。此文件名取决于服务器(或笔记本电脑)的IP

当我在我的控制台中运行这个脚本时,我成功地完成了工作,并且创建了一个包含IP(我的笔记本电脑)的文件名,这个文件被上传到S3。当我关闭笔记本电脑时,会创建文件,但文件名没有IP,文件也不会上载

我已为此脚本创建了日志,并为ifconfig命令添加了输出:

ifconfig:lo-Link-encap:Local-Loopback-inet-addr:127.0.0.1 掩码:255.0.0.0 inet6地址:1/128范围:主机上行环回运行 MTU:65536度量:1接收数据包:6432错误:0丢弃:0溢出:0 帧:0发送数据包:6432错误:0丢弃:0溢出:0载波:0 冲突:0 txqueuelen:0接收字节:1159509(1.1 MB)发送字节:1159509 (1.1MB)

此输出没有网络的IP。在runlevel0中,是否禁用了网络?有可能激活吗?有什么办法解决这个问题吗

更新

my/etc/rc0.d/(ubuntu 14.04)中的内容:

我在Debian发行版中修改了rc0.d目录,发现:

K06networking->../init.d/networking

我想这是为stop network执行的链接,但在我的Ubuntu中,这个链接不存在。我想,如果我用K07下的一个数字重命名我的链接,那么网络将被启用,我的脚本“save_logs.sh”将正常运行


如何知道网络何时被禁用,或者如何在网络被禁用之前执行脚本?

是网络将被禁用。您需要在禁用网络之前运行脚本。它通常会在引导到的同一运行级别中禁用自身

以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

事情是以数字顺序运行的,所以如果我在我的runlevel 3机器上运行你的日志脚本,我会把它放在K16

或者为了安全起见,我会为所有三个运行级别创建日志脚本

rc2.d/K16logging
rc3.d/K16logging
rc5.d/K16logging

这有用吗?

嗨,本!我的笔记本电脑里有ubuntu 14.04。我已经在/etc/rc0.r/K01save_logs.sh中创建了simbolic链接,该链接的目标是“/etc/init.d/save_logs.sh”,该链接的目标是“/etc/init.d/save_logs.sh”。我已编辑问题以添加此信息。然后,我认为符号链接和目标链接的名称是正确的。如果我只想在机器关闭时运行这个脚本,那么我应该只使用/etc/rc0d/,对吗?谢谢你!当然可以这样做,但要意识到,正如您怀疑的那样,在此之前网络将被关闭,因为所有/etc/rc[runlevel].d/K*脚本都将首先运行。因此,你需要另一个黑客把一个ip地址的接口,然后把它关闭。嗨,本!我在rc2.d、rc3.d、rc4.d和rc5.d文件夹中创建了另一个链接,现在我可以从ifconfig语句中获取IP。我很困惑。如果我登录到我的ubuntu桌面(我想是运行级别1、2、3、4或5,不是吗?),我打开一个控制台并执行一个关机指令,系统是否正在更改为运行级别0?我正在做测试,我验证了如果我从控制台关机,脚本“save_log.sh”将执行两次。在rc0.d和rcX.d中,X是我的桌面的数字。
rc2.d/K16logging
rc3.d/K16logging
rc5.d/K16logging