在 Windows 上,您可以设置如果/当服务失败时应该发生的情况。在 Linux(特别是 CentOS)上有没有标准的方法来实现同样的事情?
我的问题的一个重要部分是:如何处理保持打开状态的套接字 - 例如在 TIME_WAIT、FIN_WAIT1 等状态中。
目前,如果我正在开发的服务崩溃,我必须等待套接字清除或更改侦听端口,然后才能手动重新启动它。
谢谢你的帮助。
如何在现代(基于 systemd 的)Linux 发行版上禁用除 ssh 之外的所有服务?
我需要实施维护模式。
所有这些服务都需要关闭:
但是 ssh 不能关闭,因为这会在维护模式下用于执行任务。
当然,我可以编写一个 shell 脚本,循环遍历我想禁用的服务列表。但这感觉就像我重新发明了一些已经存在但我现在还不知道的东西。
我正在做一些故障查找,我发现了两个应该automatic设置为disabled.
找出谁做这件事的最佳方法是什么?可能是我公司的某个人,也可能是客户端的某个人。确定用户帐户就足够了。
我已经查看了 Windows 事件查看器,但是,老实说,我不确定我在寻找什么,而且还有很多工作要做。什么都没有跳到我身上,但我怀疑这只是我不知道我在寻找什么。
我一直听说并使用术语“重启”或“重启”来表示重启服务器、服务或软件模块。
“反弹”是否意味着不同的东西,还是只是重新启动的重复术语?“反弹”与重新启动或重新启动有何不同?
禁用和删除“NetworkManager”服务后,我无法启动 CentOS 7“网络”服务。当我检查网络服务状态时,出现以下错误:
#systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: failed (Result: exit-code) since Fri 2015-01-16 22:30:46 GMT; 38s ago
Process: 4857 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)
Jan 16 22:30:46 localhost.localdomain network[4857]: RTNETLINK answers: File exists
Jan 16 22:30:46 localhost.localdomain network[4857]: RTNETLINK answers: File exists
Jan 16 22:30:46 localhost.localdomain network[4857]: RTNETLINK answers: File exists
Jan 16 22:30:46 localhost.localdomain network[4857]: RTNETLINK answers: File exists
Jan 16 22:30:46 localhost.localdomain network[4857]: RTNETLINK answers: File exists
Jan 16 22:30:46 …Run Code Online (Sandbox Code Playgroud) 我被要求systemd为新服务创建一个脚本,该脚本foo_daemon有时会进入“不良状态”,并且不会通过SIGTERM(可能是由于自定义信号处理程序)而死亡。这对开发人员来说是有问题的,因为他们被指示通过以下方式启动/停止/重新启动服务:
systemctl start foo_daemon.servicesystemctl stop foo_daemon.servicesystemctl restart foo_daemon.service有时,由于foo_daemon进入不良状态,我们不得不通过以下方式强行杀死它:
systemctl kill -s KILL foo_daemon.service我如何设置我的systemd脚本,foo_daemon以便每当用户尝试停止/重新启动服务时,systemd将:
foo_daemonvia SIGTERM。foo_daemon来完成关闭/终止。foo_daemon,SIGKILL则尝试强制关闭via (因此我们没有 PID 被回收的风险以及错误 PID 的systemd问题SIGKILL)。我们正在测试的设备会快速生成/分叉多个进程,因此对于 PID 回收导致问题存在罕见但非常真实的担忧。SIGKILL针对进程的 PID发出,而不必担心杀死回收的 PID。在 CentOS 7 系统启动期间 nginx 启动失败并出现以下错误:
2014/08/04 17:27:34 [emerg] 790#0: bind() to a.b.c.d:443 failed (99: Cannot assign requested address)
Run Code Online (Sandbox Code Playgroud)
我怀疑这是由于网络接口在尝试绑定到该 IP 地址以通过 SSL 为虚拟主机提供服务之前尚未启动而发生的。
我的猜测是我需要将 network.service 指定为 nginx.service 的要求,但我根本无法在 /etc/systemd/ 中找到网络服务。
如何在 systemd 中配置服务顺序或依赖项?
在 RHEL 中,我不使用service network restart命令,而是如何重新启动特定的网络接口,比如说“eth1”,只有一个命令。
“只有一个命令”,因为那也是我ssh正在处理的唯一界面。因此,如果我要使用:ifdown然后ifup,我将永远无法执行该ifup命令,因为我的命令ssh已在ifdown eth1命令后终止一次。
所以应该有一个命令,它允许我完全关闭然后打开为我当前ssh连接提供服务的接口。所以我不需要担心连接完全丢失到我的服务器。
请问有什么想法吗?
我为我在 Ubuntu 12.04 上运行的服务创建了一堆新贵工作。我可以成功启动它们并停止:
service my_service start
service my_service stop
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时它们没有列出
service --status-all
Run Code Online (Sandbox Code Playgroud)
任何想法我可能会错过什么?
为了创建服务,我刚刚在 /etc/init.conf 中添加了 .conf 文件。
不时,我遇到的问题与OS X客户端的网络连接(有线和无线,豹/雪豹),其中没有将解决这个问题,直到你重新启动。
在基本故障排除(例如 DHCP、DNS)、检查接口故障(禁用/启用)、检查日志并没有找到足够有用的信息后,有时当其他一切都失败时,最好的办法就是重新启动机器。我不确定所有“init.d/networking restart”在 Linux 中的作用,但我知道它比禁用和启用接口更有帮助。
谢谢!
service ×10
linux ×5
systemd ×3
centos ×2
boot ×1
eth0 ×1
eventviewer ×1
mac-osx ×1
maintenance ×1
networking ×1
nginx ×1
process ×1
redhat ×1
signals ×1
socket ×1
ubuntu ×1
ubuntu-12.04 ×1
upstart ×1
wifi ×1