如何在BASH脚本中检查用户是否为root用户?
我知道我可以使用
[[ $UID -eq 0 ]] || echo "Not root"
Run Code Online (Sandbox Code Playgroud)
要么
[[ $EUID -eq 0 ]] || echo "Not root"
Run Code Online (Sandbox Code Playgroud)
但是如果脚本是通过fakeroot调用的,那么UID和EUID都是0(当然,因为fakeroot伪造了root权限).
但有没有办法检查用户是否是root用户?没有尝试做只有root可以做的事情(即在/中创建一个文件)?
语境
\n\n我们使用 Spring Cloud Netflix 和 Eureka 作为服务发现,使用 Zuul 来代理服务并对其进行负载平衡。
\n\n微服务是使用 NodeJS 实现的,并使用 NPM 模块eureka-js-client和中间的自定义层在 Eureka 注册,该自定义层处理所有微服务通用的配置和内容。
\n\n问题
\n\n问题是尤里卡无法识别一项服务是否出现故障。这是一个问题,因为我们拥有一个具有自动部署功能的开发基础架构,每次都会在不同端口上重新部署和重新启动微服务,而无需重新启动 Eureka(和 Zuul)。
\n\n因此,过了一段时间,我们就有了十个或更多的一个微服务实例,其中只有一个处于运行状态,但所有实例都被识别为 being UP。
解决方法
\n\n我尝试在客户端上设置heartbeatInterval较小的值,但这没有帮助。
我尝试在服务器上设置renewalThresholdUpdateIntervalMs较小的值,但这也没有帮助。
更多令人沮丧、无益的属性尝试\xe2\x80\xa6
问题
\n\n如何配置 Eureka 驱逐实例或将DOWN在合理时间(不是 30 分钟左右)内未发送心跳的实例设置为状态?
代码片段
\n\n服务器本身不包含可提及的代码(只是使用 Spring Cloud Starter 启动 Eureka 服务器的一些注释)。
\n\nEureka服务器的配置(我已经删除了所有不工作的尝试):
\n\nserver:\n port: 8761\n\nspring:\n cloud:\n client:\n hostname: localhost\n\neureka:\n instance:\n …Run Code Online (Sandbox Code Playgroud)