如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙相关的知识,希望对你有一定的参考价值。
在Linux系统中不同的版本系统对服务的操作是不一样的。
在RHEL&Centos6版本及之前的版本中对服务的管理是这样的:
[root@linuxprobe ~]#service 服务名 start/stop/status/restart/reload
例如:
[root@linuxprobe ~]#service iptables status \\\\iptables 的状态
[root@linuxprobe ~]#service iptables stop \\\\iptables 停止
[root@linuxprobe ~]#service iptables restart \\\\iptables重启
[root@linuxprobe ~]#chkconfig iptables on \\\\开机自启
[root@linuxprobe ~]#chkconfig iptables off \\\\开机关闭
在RHEL&Centos6版本及之前的版本中对服务的管理是这样的:
[root@linuxprobe ~]#systemct start/stop/status/restart/reload 服务.service
例如:
参考技术A 1)重启后生效开启:chkconfigiptableson关闭:chkconfigiptablesoff2)即时生效,重启后失效开启:serviceiptablesstart关闭:serviceiptablesstop需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。在开启了防火墙时,做如下设置,开启相关端口,修改/etc/sysconfig/iptables文件,添加以下内容:-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport80-jACCEPT-ARH-Firewall-1-INPUT-mstate--stateNEW-mtcp-ptcp--dport22-jACCEPT[root@linuxprobe ~]#systemctl start firewalld \\\\启用firewalld
[root@linuxprobe ~]#systemctl stop firewalld \\\\关闭firewalld
[root@linuxprobe ~]#systemctl enabledfirewalld \\\\开机启用firewalld
[root@linuxprobe ~]#systemctl disabled firewalld \\\\开机禁用firewalld
更多Linux的服务管理注意事项建议参考《Linux就该这样学》,加油
如何使用 shell 脚本连接到 linux 服务器并停止/启动服务?
【中文标题】如何使用 shell 脚本连接到 linux 服务器并停止/启动服务?【英文标题】:How to connect to a linux server and stop/start a service using a shell script? 【发布时间】:2017-11-18 09:35:14 【问题描述】:我想设置一个脚本,该脚本将连接到 linux 服务器,然后停止/启动服务。但是在服务停止和启动之间,它应该等待大约 10 秒,然后检查服务是否真的停止了。
service httpd stop
--wait 10 seconds. check ps -ef | grep httpd, kill if any hanged processes
service httpd start
有人可以帮我看看怎么做吗?
【问题讨论】:
使用sleep
和kill -9
而不是显式检查。
我可以使用用户名和密码连接到服务器吗?我正在检查表格,但大多数人说创建一个 ssh 密钥。我将在我想运行命令的同一台服务器上部署这个 shell 脚本
您当然可以将 ssh 服务器配置为接受密码。但不建议这样做,因为它比密钥更不安全。而且您只能以交互方式执行此操作,因此不能使用脚本。至少你不应该。
我正在尝试睡眠,但出现此错误 sleep: invalid time interval `10\r',你能告诉我如何解决这个问题吗?这是我在脚本中添加的内容:sleep 10
您显然需要指定要杀死的什么进程。如果您不确定它们的用法,请阅读您尝试使用的命令的手册页。例如man kill
。在您的情况下,killall -9 /usr/sbin/httpd
可能是一个不错的选择,因为它不需要特定的进程 ID。
【参考方案1】:
wait
命令用于不同的目的,我们需要使用sleep
命令代替。
查看此链接了解详细差异。 https://***.com/a/13296927/3086531
检查进程是否正在运行的脚本
#!/bin/bash
UP=$(pgrep httpd | wc -l);
if [ "$UP" -ne 1 ];
then
echo "httpd is down.";
else
echo "All is well.";
fi
您的最终代码将是
#!/bin/bash
service httpd stop
sleep 10
UP=$(pgrep httpd | wc -l);
if [ "$UP" -ne 1 ];
then
service httpd start #start serivce again, since no process are found
else
echo "Service is not stopped yet.";
killall -15 httpd #Kills all processes related to httpd
service httpd start #start httpd process
fi
【讨论】:
不需要这种复杂性。为什么还要检查是否还有一个进程,无论如何你都会硬杀它。无需检查即可触发killall -9
,您就知道一切都很好。
@arkascha,应该优雅地停止进程。我们应该允许他们在终止之前执行清理程序(例如删除锁定文件、将内存中的数据刷新到硬盘等)。
然后用killall -15
(或简单的killall
)代替killall -9
。那不是我的意思。
@arkascha,发送信号 15 (SIGTERM) 有什么问题?它是要被处理的,而 SIGKILL 不能被进程处理。
@SaiAvinash 为了将 java 应用程序作为服务运行,您需要在此处执行此过程***.com/a/11203626/3086531 或者这是您想要实现的简单解决方案***.com/a/11203634/3086531以上是关于如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙的主要内容,如果未能解决你的问题,请参考以下文章
如何在Linux中启动/停止和启用/禁用FirewallD和Iptables防火墙