ZSH继续打破`zsh:fork failed:`

时间:2016-12-16 15:40:49

标签: zsh iterm2 oh-my-zsh

在过去的几周内(可能是因为我升级到Sierra),我继续使用ZSH在 iTerm2 中遇到这个奇怪的问题。

基本上,在我的常规工作流程中的间歇点,命令将因错误而停止正常工作:

scholars

有人知道为什么会这样,以及我如何解决它?

2 个答案:

答案 0 :(得分:0)

此错误可能反映工作流程中的内存泄漏。我最近在使用自动化脚本时遇到了问题,发现在程序出现此消息失败之前,内存使用率已增加到100%左右。

通常,您可以通过在Mac OS上运行“活动监视器”应用程序并导航到“内存”选项卡来检查内存泄漏。还有很多方法可以从zsh终端监视内存,例如您可以使用$ ps -eLf | wc -l打印出进程数,或使用free -m检查可用内存。

如果这是内存问题,最好的解决办法是重写您的工作流程,以提高内存效率。另一个解决方法是增加计算机对可运行进程的限制,例如通过将以下内容添加到您的etc/profile文件中;

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi

参考:

答案 1 :(得分:0)

我遇到这个问题将近一个星期,这让我发疯了,因为我必须每次都重新启动计算机。单。时间。

就我而言,这是一个cron进程。我的进程每分钟都在运行,这似乎在消耗大量内存。解决我这个问题的步骤是。

  1. 运行crontab -e并降低cron进程运行的频率。
  2. 运行 $payer = new Payer(); $payer->setPaymentMethod('paypal'); $item_1 = new Item(); $item_1->setName('Example Item')/** item name **/ ->setCurrency('USD') //->setCategory('DIGITAL') seems not to be working ->setQuantity($selection) ->setPrice($price); /** unit price **/ $item_list = new ItemList(); $item_list->setItems(array($item_1)); $amount = new Amount(); $amount->setCurrency('USD') ->setTotal($selection * $price); $transaction = new Transaction(); $transaction->setAmount($amount) ->setItemList($item_list) ->setDescription($decription); $redirect_urls = new RedirectUrls(); $redirect_urls->setReturnUrl(URL::route('ppstatus'))/** Specify return URL **/ ->setCancelUrl(URL::route('ppstatus')); $payment = new Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setRedirectUrls($redirect_urls) ->setTransactions(array($transaction)); $inputFields = new InputFields(); $inputFields->setNoShipping(1); $webProfile = new WebProfile(); $webProfile->setName("example"); $webProfile->setInputFields($inputFields); try { $payment->create($this->_api_context); } catch (\PayPal\Exception\PPConnectionException $ex) { if (\Config::get('app.debug')) { return json_encode(['status' => false, 'message' => 'Connection timeout']); } else { return json_encode(['status' => false, 'message' => 'Some error occur, sorry for inconvenient']); } } foreach ($payment->getLinks() as $link) { if ($link->getRel() == 'approval_url') { $redirect_url = $link->getHref(); break; } } if (isset($redirect_url)) { /** redirect to paypal **/ return json_encode(['status' => true, 'message' => $redirect_url]); } \Session::forget('donatorName'); return json_encode(['status' => false, 'message' => 'Unknown error occurred']);
  3. 如果Activity Monitor.图标向上和向下跳跃并且没有打开,请关闭一些程序。就我而言,我关闭了Evernote和Slack。我认为这释放了一些内存,并打开了活动监视器。
  4. 单击Activity Monitor中的Process Name标签。
  5. 向下滚动,您可能会看到一个不断重复的过程。 (在这里,我看到了很多Activity Monitor
  6. 您要停止所有这些过程。选择所有叛变过程,然后在左上角单击cron将其全部退出。 。
  7. 那解决了我的问题。

接下来的几天我会看的。如果有什么变化,我会更新。否则,这意味着它有效。

祝你好运!