相关疑难解决方法(0)

为什么我的Perl脚本退出137?

有没有办法消除perl中的警告(退出代码137)?我在另一个shell脚本中运行Linux上的Perl脚本.此Perl脚本以警告和退出代码137退出.我无法确定退出代码137代表什么.

避免此警告的最佳方法是什么?我在脚本中尝试了"没有警告",并且在我的Perl脚本末尾也有一个退出0.

perl exit-code

45
推荐指数
4
解决办法
5万
查看次数

egrep和grep之间的区别

我有一个问题grepegrep关于unix.

正如我最近在研究shell commandsunix,我想知道grep和egrep之间有什么区别.

我发现我们可以使用正则表达式的grep和egrep.但是,我发现这两个命令之间有所不同:

因为^,grep和egrep具有相同的含义,即在一开始就找到包含给定内容的行.

但是,因为|grep,前面没有反斜杠|,意味着它的特征|,如果我在它前面放一个反斜杠,它会打开它特别意味着找到该行包含它前面的东西和它后面的东西.但是,对于egrep来说,情况正好相反.|具有grep的后一含义,并且\|在使用时具有grep 的前一个含义.

有人可以解释为什么吗?

regex grep

44
推荐指数
2
解决办法
3万
查看次数

进程在PyCharm中以退出代码137结束

当我在PyCharm中手动停止脚本时,进程以退出代码137完成.但是我没有停止脚本.仍然有退出代码137.有什么问题?

Python版本为3.6,运行xgboost.train()方法时完成.

python pycharm xgboost

36
推荐指数
6
解决办法
3万
查看次数

Bitmap分配如何在Oreo上运行,以及如何调查它们的内存?

背景

在过去几年中,为了检查Android上的堆内存量以及使用量,可以使用以下内容:

@JvmStatic
fun getHeapMemStats(context: Context): String {
    val runtime = Runtime.getRuntime()
    val maxMemInBytes = runtime.maxMemory()
    val availableMemInBytes = runtime.maxMemory() - (runtime.totalMemory() - runtime.freeMemory())
    val usedMemInBytes = maxMemInBytes - availableMemInBytes
    val usedMemInPercentage = usedMemInBytes * 100 / maxMemInBytes
    return "used: " + Formatter.formatShortFileSize(context, usedMemInBytes) + " / " +
            Formatter.formatShortFileSize(context, maxMemInBytes) + " (" + usedMemInPercentage + "%)"
}
Run Code Online (Sandbox Code Playgroud)

这意味着,您使用的内存越多,特别是通过将位图存储到内存中,您就可以越接近允许应用程序使用的最大堆内存.当您达到最大值时,您的应用程序将因OutOfMemory异常(OOM)而崩溃.

问题

我注意到在Android O上(在我的情况下是8.1,但它也可能在8.0上),上面的代码不受Bitmap分配的影响.

进一步深入,我注意到在Android分析器中你使用的内存越多(在我的POC中保存大位图),使用的本机内存就越多.

为了测试它是如何工作的,我创建了一个简单的循环:

    val list = ArrayList<Bitmap>()
    Log.d("AppLog", "memStats:" + MemHelper.getHeapMemStats(this))
    useMoreMemoryButton.setOnClickListener {
        AsyncTask.execute {
            for (i in …
Run Code Online (Sandbox Code Playgroud)

memory android bitmap android-8.0-oreo

17
推荐指数
1
解决办法
1776
查看次数

手工ELF文件

嘿,我手工创建了一个ELF文件,它有两个部分(.text和.shstrtab)和一个加载.text部分的程序头..text部分非常小,它只包含以下三条指令......

    # and exit
    movl    $0,%ebx       # first argument: exit code
    movl    $1,%eax       # system call number (sys_exit)
    int     $0x80         # call kernel
Run Code Online (Sandbox Code Playgroud)

当我在这个elf文件上运行时,readelf不会抱怨.如果我执行此文件,那么一旦执行它,它就会被杀死并且屏幕上会出现"Killed"消息.我在stackoverflow上看到了以下帖子,我仍然会经历它.

现在我担心的是这个程序不会要求任何(额外的)内存,而且是否真的可以手动执行ELF并期望系统可以容忍它?

谢谢,

linux elf

9
推荐指数
1
解决办法
1842
查看次数

linux OOM(内存不足)杀手级电子邮件通知?

这个答案描述了Linux上的内存不足.

有没有办法在OOM杀手杀死某事时得到通知?电子邮件更可取.有人可能会使用看门狗这样做,但我想知道最简单,最强大的方法是什么.

linux email notifications out-of-memory

9
推荐指数
1
解决办法
2771
查看次数

Django在Amazon Elastic Beanstalk上的迁移命令被终止

我正在使用亚马逊的Elastic Beanstalk和Django 1.8.2.这是我的容器命令,

container_commands:
  01_wsgipass:
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
  02_makemigrations:
    command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput"
    leader_only: true
  03_migrate:
    command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
    leader_only: true
Run Code Online (Sandbox Code Playgroud)

由于某些原因,migrate命令被杀死.即使在我的本地有一个新的数据库,所有迁移工作都很好.但是以下是eb-activity.log上出现的错误.

Synchronizing apps without migrations:
  Creating tables...
  Running deferred SQL...
  Installing custom SQL...
  Running migrations:
  Rendering model states.../bin/sh: line 1: 21228 Killed                  python manage.py migrate --noinput
   (ElasticBeanstalk::ExternalInvocationError)
Run Code Online (Sandbox Code Playgroud)

注意:相同的容器命令在Elastic Beanstalk中没有任何问题,工作正常.我尝试使用--verbose 3migrate命令,但没有得到任何其他调试消息.

有解决方案吗 提前致谢.

python django database-migration amazon-web-services amazon-elastic-beanstalk

9
推荐指数
1
解决办法
1401
查看次数

Unix错误消息"Killed"

我正在Unix平台上运行C++中的Hex游戏(目前正在运行c shell).我的游戏的AI需要不到一分钟的时间来决定它的移动(我使用的是一种蒙特卡罗算法),经过几个步骤,程序自行终止,只是打印"Killed"才返回我的命令提示符.有没有人理解导致这种情况发生的原因,并对如何更改我的代码进行修复提出任何建议?如果它有帮助,我没有使用我的系统.我使用SSH Secure Shell连接到学校的服务器.我还应该指出,我不认为我的算法有问题,因为它可以像我预期的那样工作直到崩溃,但它在决定第7步时一直崩溃.

c++ unix

5
推荐指数
1
解决办法
8717
查看次数

我的程序是“杀”

可能是由内核的建议在此问题。我想知道为什么我被杀,就像发生暗杀一样。:)

此外,我能做些什么使我的程序正常执行吗?


编年史

我的程序正常执行。但是,我们遇到了一个很大的数据集,即1.000.000 x 960浮点数,我家里的笔记本电脑无法拿走它(给出了std::bad_alloc())。

现在,我在实验室中,台式机配备9.8 GiB,处理器3.00GHz×4,其内存是家用笔记本电脑的两倍多。

在家里,数据集无法加载到std::vector存储数据的。在这里,在实验室中,这已经完成,程序继续构建数据结构。

那是我最后一次听到的消息:

Start building...
Killed
Run Code Online (Sandbox Code Playgroud)

实验室中的桌面在Debian 8上运行。我的程序针对数据集的子集(特别是1.00.000 x 960浮点数)按预期运行。


编辑

strace 输出最终可用:

...
brk..
brk(0x352435000)                        = 0x352414000
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f09c1563000
munmap(0x7f09c1563000, 44683264)        = 0
munmap(0x7f09c8000000, 22425600)        = 0
mprotect(0x7f09c4000000, 135168, PROT_READ|PROT_WRITE) = 0
...
mprotect(0x7f09c6360000, 8003584, PROT_READ|PROT_WRITE) = 0
+++ killed by SIGKILL +++
Run Code Online (Sandbox Code Playgroud)

所以这告诉我们,我的记忆了,我

c++ linux debian kernel kill

5
推荐指数
1
解决办法
5359
查看次数

如何找到Python脚本被杀死的原因?

我有大约 100 万个文件(它们是输出模拟输出)。我想将它们的特定信息存储在一个文件中。我有一个 1M 的 for 循环。我放置了一个计数器来跟踪 for 循环的状态。它会killed在 875000 和 900000 之间。我认为这可能是空间问题。当我运行df -h或 时df /,我有大约 68G 可用。Python 脚本可能被杀死的其他可能原因是什么?我怎样才能更多地探索它?

python bash

4
推荐指数
2
解决办法
1万
查看次数