- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 nohup 在 mac 上创建进程。进程已创建,但创建后立即终止。该进程有命令/usr/bin/wget http://local.domain/some.php .这是来自/var/log/system.log 的错误
(0x7fed9c80a940.anonymous.nohup[23454]): Bug: 12E55: launchd + 67394 [7DCC9489-2DF5-3807-83FA-EF5666EE8078]: 0x0
(0x7fed9c80a940.anonymous.nohup[23454]): Switching sessions is not allowed in the system Mach bootstrap.
(0x7fed9c80a940.anonymous.nohup[23454]): _vprocmgr_switch_to_session(): kr = 0x44c
我已经坚持了几天了。
进程在 linux 上创建和执行都很好。
最佳答案
我认为这是上下文的问题。 OsX 不是 Linux,它基于 BSD,但它不仅仅是一个克隆/发行版。在它的核心部分,有这个 Mach 内核,它为您提供 DOS(如拒绝服务)处理。我从这一行得到这个:
Switching sessions is not allowed in the system Mach bootstrap
我认为,问题在于 Mach 处理 Bootstrap 上下文的方式。 nohup
暗示执行的命令可以/可能在您的情况下在注销后继续存在。使用 wget
时,这不会计算:
In Mach, the bootstrap task is assigned responsibility for looking up requests for Mach ports. As part of this effort, each Mach task is registered in one of two groups—either in the startup context or a user’s login context
你在登录上下文中使用 nohup
fork 一个 child ,这是我上次检查的,注销后清理(某种自动释放池风格)。这真的行不通,对吗?
更重要的是:您正在处理响应请求的 PHP,但与此同时, fork 的子进程可能比管理这些请求的上下文更长寿。因此,这会影响 nohup
的使用:
Contexts also pose an issue for users running background jobs with nohup or users detaching terminal sessions using screen. There are times when it is perfectly reasonable for a program to survive past logout, but by default, this does not occur.
基本上,因为您是从登录上下文运行进程,所以任何子进程都会自动在相同(登录)上下文中运行。在您的情况下,您对子进程负责,但 nohup
暗示它可能比您的上下文更长寿,没有人对该进程负责,这可能是有害的。它需要上下文启动。这有点冒险。我还没有找到明确的解决方法,su[do]
没有帮助,因为这对上下文没有影响。
我能想到的唯一方法是让你编写一个在启动上下文中运行的脚本/守护进程,然后空闲,等待你将命令传递给它,因为在启动上下文中运行的任何守护进程都会在其自己的(启动)上下文。无论如何,我想这就是 httpd
的工作方式
要么那样,要么创建第三个上下文,但我无法告诉您如何安全地这样做...
关于php - 如何在mac/usr/bin/nohup上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17746158/
我正在使用源代码中的Postgres 13(Rel_13_STRATE分支),并且我使用的是来自apachea/age源代码的(Release/PG13/1.3.0分支)中的1.3.0版的Apache
/usr/bin/ld: cannot find -ldlib /usr/bin/ld: cannot find -lcblas /usr/bin/ld: cannot find -llapack 在
我正在尝试运行 project 。但它给出了一个错误 fs.js:666 return binding.readdir(pathModule._makeLong(path));
我的新 CentOS7 中有两个目录: Work_Folder1/my_project/linux_dev.cfg Work_Folder2/my_project/linux_dev.cfg 如果我尝
我正在读这个thread和 PostgreSQL 9.4 的手册。我跑 ps auxw | grep postgres | grep -- -D 但是得到 postgres 17340 0.0
我想在我的 shell 中使用系统服务,但该服务的 bin 路径在不同的机器上是不同的(/usr/sbin/myservice 或/usr/local/sbin/myservice)。 那么,我怎样才
我正在为 centos 制定 RPM 规范,如果 arch 是 64 位的,它需要将共享库安装到/usr/lib64,否则需要安装到/usr/lib? 最佳答案 这不是它应该的工作方式。决定库去向的不
我使用 gem install watchr 在 OS X (10.8.3) 上安装了 watchr。它安装在 /usr/bin/watchr $ which watchr /usr/bin/watc
在linux下我们经常用到的四个应用程序的目录是:/bin、/sbin、/usr/bin、/usr/sbin bin: bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp
我在 Pop_OS 下使用 PyCharm 2020.2.3 和 Python 3.8.6! 20.10(你可以像我使用 Ubuntu 20.10 一样)无法在 /usr/bin 或 /usr/lib
我在新的 MacBook 中使用 OS X Yosemite。刚刚安装了 Homebrew 和一些基本的软件包,最近搬到了这台新电脑上。 我注意到,当我安装新的 brew 包时,偶尔会出现链接错误。出
我到 gcc 的链接行连续包含以下两个条目: -lrt -lpam 这似乎扩展为: /usr/lib64/librt.so /usr/lib/libpam.so 为什么 rt 解析为 lib64 而
我有一个大型捆绑软件发行版的错误 Makefile。在某些时候,编译器总是“忘记”我想在 32 位程序中编译。这导致部分程序具有 64 位库,而其他程序具有 32 位库。 如何在每次运行 gcc 时强
如果我安装了Go发行版软件包,则会在/usr/lib/golang/pkg中看到很多文件,在/usr/lib/golang/src中看到非常相似的文件集。这两组之间有什么关系? pkg是从src中的源
我在安装 python 2.7.6 时犯了一个错误,没有使用 home brew,现在我的 python 设置为 /usr/local/bin/python 中的 python(这是 2.7.6)。
我是一名见习程序员,有时我的头脑浮在云端.. 我的同事通过 ssh 连接来搞乱我的专业计算机。其中一位告诉我,防止这种情况发生的最佳方法是保护我的计算机。为了做到这一点,我不小心更改了/usr 目录的
我在 ubuntu 16.04 上尝试编译 fbthrift ( https://github.com/facebook/fbthrift ) 时遇到奇怪的错误 make[4]: Entering d
我遇到了这个奇怪的问题 ag: /usr/lib64/liblzma.so.5: no version information available (required by ag) 由于某种原因,预装
我用的是 ubuntu。 我发现安装的许多 Python 库都在 /usr/lib/python 和 /usr/lib64/python 中。 当我打印一个模块对象时,模块路径显示该模块位于/usr/
在 Linux 上,特别是 Debian Jessie,我应该使用 /usr/bin/python 还是应该在 /usr/local/bin 中安装另一个副本? 据我所知,前者是系统版本,随着操作系统
我是一名优秀的程序员,十分优秀!