在后台睡眠时的Unix内存问题

数学

我在不允许使用的Linux服务器上工作cron因此,为了避免这种情况,我编写了需要在确定的时间运行的脚本,如下所示:

while true
do
    ...
    ...
    sleep 1d #changes upon requirement of my script
done

我总是在后台启动脚本nohup ./script.sh &

我的问题是,说我在服务器上运行着这样的六个/七个脚本-大多数情况下它们会处于休眠状态。sleep会消耗某种内存吗?它会影响服务器的性能吗?有什么有效的方法来解决这个问题吗?

征服了

是的-您正在使用这些脚本消耗内存。实际上,您正在使用内存运行两个进程:

  • 外壳(例如bash)
  • sleep 本身。

sleep将会非常轻巧,但是shell可能会消耗几兆字节的内存。在我的系统上,空闲的非交互式bash消耗〜1MiB,而睡眠0.7MiB。您可以检查pstop(查看RSS列)-尽管实际上总数中有很多是像库之类的东西,使用它们的所有进程之间都共享这些库。总而言之,每个值可能小于1MiB。

在Linux上,您可以从/proc/pid/status(和/proc/pid/smaps获取更多详细信息这些Vm*在这里很有趣。例如:

bash -c 'grep Vm /proc/$$/status'
VmPeak:    13380 kB
VmSize:    13380 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:       972 kB
VmRSS:       972 kB
VmData:      220 kB
VmStk:       132 kB
VmExe:       208 kB
VmLib:      2320 kB
VmPTE:        48 kB
VmPMD:        12 kB
VmSwap:        0 kB

您可以看到总计972 kB的RSS(已使用的RAM量),其中220 kB是“数据”(通常不共享),而132 kB是堆栈(也不共享)。因此,每次额外运行的重击都非常小。

一些建议:如果您必须执行许多这样的解决方法...为什么不能使用cron?这是一种更简单,更清洁的方法,几乎​​不会出现意想不到的错误(快速!如何sleep 1d处理夏时制?如果您的睡眠较早返回是因为SIGTERM是重新启动/关闭的一部分,会发生什么情况?)。如果您的系统管理员担心未经授权的人员安排cron作业,请将他/她指向/etc/cron.allow/etc/cron.deny这些文件记录在crontab(1)中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在后台将图像加载到列表视图时出现“内存不足”错误

来自分类Dev

在后台显示问题时下载图像

来自分类Dev

滚动列表视图时在后台重复

来自分类Dev

应用程序在后台时的BroadcastReceiver

来自分类Dev

程序在后台时听按键

来自分类Dev

重击:在后台作业完成时执行

来自分类Dev

应用程序在后台时的BroadcastReceiver

来自分类Dev

应用程序在后台时的 OnClickListener

来自分类Dev

应用程序在后台时的 OnClickListener

来自分类Dev

从UNIX sh脚本在后台运行进程

来自分类Dev

UNIX-在后台运行Shell脚本并创建输出日志

来自分类Dev

即使在睡眠或重新启动后,仍在后台连续运行IOS应用程序

来自分类Dev

如何在 vb.net 睡眠期间在后台运行 .Gif 图像

来自分类Dev

使用睡眠时如何防止后台宏停止?

来自分类Dev

应用程序在后台运行时的问题

来自分类Dev

应用程序在后台时的通用链接

来自分类Dev

当iCal不在后台时,无法从iCal删除事件

来自分类Dev

iOS应用程序在后台录制时音频中断

来自分类Dev

当我加载数据时,hive在后台做什么?

来自分类Dev

传递参数时在后台执行php不会发生

来自分类Dev

iOS-UILocalNotification不触发(在后台设置时)

来自分类Dev

尝试在后台播放时AUIOClient_StartIO失败

来自分类Dev

UIAutomation:当应用程序在后台时更改位置

来自分类Dev

应用程序在后台时NSNotificationCenter回调

来自分类Dev

Swift CoreMotion在后台时检测设备上的点击或敲门

来自分类Dev

应用程序在后台时未调用didUpdateLocations

来自分类Dev

在后台单击表单时,Datagridview将消失

来自分类Dev

在Android上将页面留在后台时触发“ beforeunload”事件

来自分类Dev

当应用程序在后台时,Sendbird推送通知

Related 相关文章

  1. 1

    在后台将图像加载到列表视图时出现“内存不足”错误

  2. 2

    在后台显示问题时下载图像

  3. 3

    滚动列表视图时在后台重复

  4. 4

    应用程序在后台时的BroadcastReceiver

  5. 5

    程序在后台时听按键

  6. 6

    重击:在后台作业完成时执行

  7. 7

    应用程序在后台时的BroadcastReceiver

  8. 8

    应用程序在后台时的 OnClickListener

  9. 9

    应用程序在后台时的 OnClickListener

  10. 10

    从UNIX sh脚本在后台运行进程

  11. 11

    UNIX-在后台运行Shell脚本并创建输出日志

  12. 12

    即使在睡眠或重新启动后,仍在后台连续运行IOS应用程序

  13. 13

    如何在 vb.net 睡眠期间在后台运行 .Gif 图像

  14. 14

    使用睡眠时如何防止后台宏停止?

  15. 15

    应用程序在后台运行时的问题

  16. 16

    应用程序在后台时的通用链接

  17. 17

    当iCal不在后台时,无法从iCal删除事件

  18. 18

    iOS应用程序在后台录制时音频中断

  19. 19

    当我加载数据时,hive在后台做什么?

  20. 20

    传递参数时在后台执行php不会发生

  21. 21

    iOS-UILocalNotification不触发(在后台设置时)

  22. 22

    尝试在后台播放时AUIOClient_StartIO失败

  23. 23

    UIAutomation:当应用程序在后台时更改位置

  24. 24

    应用程序在后台时NSNotificationCenter回调

  25. 25

    Swift CoreMotion在后台时检测设备上的点击或敲门

  26. 26

    应用程序在后台时未调用didUpdateLocations

  27. 27

    在后台单击表单时,Datagridview将消失

  28. 28

    在Android上将页面留在后台时触发“ beforeunload”事件

  29. 29

    当应用程序在后台时,Sendbird推送通知

热门标签

归档