在 RHEL 中,除了使用service network restart
命令之外,我怎样才能仅使用一个命令重新启动特定的网络接口,比如说“eth1”。
“只有一个命令”,因为这也是 my 正在工作的唯一界面ssh
。因此,如果我要使用:ifdown
然后ifup
,我将永远无法点击该ifup
命令,因为 myssh
已经在命令之后被终止一次ifdown eth1
。
因此应该有一个命令允许我完全关闭然后打开为当前连接提供服务的接口ssh
。这样我就不必担心与服务器的连接完全丢失。
请问有什么想法吗?
答案1
您可以使用:
ifdown eth1 && ifup eth1
作为单个命令。&& 只运行一个命令,然后运行另一个命令如果第一个命令成功。如果您需要使用 sudo,请确保在每个命令之前使用它:
sudo ifdown eth1 && sudo ifup eth1
只要您的接口配置为具有必要的 IP 和路由以匹配当前配置,您的 ssh 连接就不会断开。
如果您担心在没有其他访问方法的生产服务器上使用它,这是可以理解的。尽管该命令完全符合您的要求,但很容易出现配置错误,只有在运行此命令后才会注意到。如果您没有其他访问方法(例如,带外控制台或在另一个接口上运行的 SSHD),最安全的做法是不要这样做。
我经常使用这种技术来“重新启动”界面,但我通常会有一个可用的备份访问方法,以防万一。
答案2
您可以通过发出以下命令来“重新启动”一个接口:
# ifdown eth1
# ifup eth1
之后,您可以验证新配置是否有效
# ip a
答案3
您是否尝试更改远程计算机上接口的 IP 地址(或任何接口参数)?如果答案是肯定的,那么您可以尝试以下操作之一:
一个很酷的方法是使用 screen 实用程序创建一个会话,只需输入“screen”。重新启动网络服务后,SSH 连接断开,使用屏幕-ls检查会话是否仍处于活动状态(但已分离)并屏幕-r恢复分离的会话。如果您的接口配置文件中没有错误,即网络服务已成功重新启动,此方法将起作用。
您还可以使用以下技巧:
$ cp -v current_conf_file current_conf_file.bak
$ echo "mv current_conf_file.bak current_conf_file && service network restart" | at now+10min
然后继续编辑接口配置文件并重新启动网络服务。如果出现错误,您只需等待 10 分钟,以便重新应用先前的配置并重新启动网络服务。
答案4
所有关于 ifup 和 ifdown 的答案都不符合问题。ifup 和 ifdown 只是打开和关闭接口,它不会影响网络服务。对于 linux 网络服务并不意味着接口 ip 设置。
请检查 /etc/rc.d/network 脚本以了解更多详细信息。