Articles of unix

在cURL命令中使用环境variables – Unix

我的问题很简单。 我想在cURL命令中使用环境variables,类似于: curl -k -X POST -H 'Content-Type: application/json' -d '{"username":"$USERNAME","password":"$PASSWORD"}' 当我运行命令$ USERNAME作为“$ USERNAME”string传递给命令而不是variables的值。 有没有办法摆脱这种情况? 谢谢。

使用SIGKILL杀死父进程和subprocess

我正在写一个shell脚本,在其中我有父进程,它有由sleep &命令创build的subprocess。 现在我想杀死父进程,这样subprocess也会被杀死。 我可以用下面的命令来做到这一点: trap "kill $$" SIGINT trap 'kill -HUP 0' EXIT trap 'kill $(jobs -p)' EXIT 这些命令正在使用kill [parent_process_ID]命令,但是如果我使用kill -9 [parent_process_ID]那么只有父进程将被终止。 请进一步指导我实现此function,以便当我用任何命令杀死父进程时,subprocess也应该被终止。

UNIX / Linux IPC:从pipe道读取。 如何知道运行时的数据长度?

我有一个subprocess生成一些可变长度的输出,然后使用半双工pipe道将其发送给父进程。 在父,如何使用read()函数? 由于每次数据可以有不同的长度,我怎么能在运行时知道数据的大小来做缓冲区的任何malloc()? fstat()函数可以在pipe道文件描述符上使用吗? 我知道read()函数将读取指定数量的字节,但如果在请求的字节被读取之前到达文件结尾(而不是EOF字符),将返回0。 我专门运行一个2.6.27-9内核的Ubuntu GNU / Linux。 理查德·史蒂文森在UNIX环境下的高级编程中的所有例子都指定了写入pipe道时的数据长度,或者依赖于fgets()stdio.h函数。 由于我关心速度,我想尽可能远离使用stdio.h。 这将有必要共享内存更快? 谢谢,德鲁夫

Sed:如何replace特定模式位于文件中后发现的string

如果我在文件中有以下列表: integer, parameter :: ni = 1024 integer, parameter :: nj = 256 integer, parameter :: nk = 16 并希望基于string'ni ='进行search,然后用例如'512'这样的新stringreplace后面的string(本例中为'1024')(我想保留空格)。 我该如何使用sed? 请注意,我想只是擦除等号后的任何内容,这是因为有时string不会是一个简单的整数,它可能是“1.D0”。 在某些情况下,可能会有评论。 所以我只是想把等号前面的东西抹掉,换成新的值。 结果将是: integer, parameter :: ni = 512 integer, parameter :: nj = 256 integer, parameter :: nk = 16

每个Unix文件描述是否都有自己的读/写缓冲区?

在引用关于read()和write()的这个问题时 ,我想知道每个打开的文件描述是否有自己的读写缓冲区,或者文件多次打开时是否有单个读写缓冲区立刻。 我很好奇,因为这会影响重叠写入同一个文件的情况。 也许这在Unix之间有所不同呢? (根据我的理解,“文件描述”是指关于打开文件的信息/选项,例如当前的标记位置,而“文件描述符”则指的是参考描述的过程中使用的数字。 )

* NIX GUI如何工作?

我想知道更多关于* NIX系统的GUI是如何工作的,但是不知道从哪里开始研究。 从我的理解来看,X服务器就是让所有的视觉效果成为可能,而且还有像KDE,Gnome等等的各种UI环境。 但是,例如,我一直认为,在特定的UI环境下运行,将您限制在使用该环境的程序中,直到我意识到我能够在Gnome下使用KDE实用程序和软件,反之亦然,它们保留了本机的外观环境。 什么是开始学习这个话题的好地方?

我的虚拟环境(python)导致我的PYTHONPATH中断?

在我的/ etc / profile中,我设置了PYTHONPATH。 但是,当我source myvirtual-env 然后在Python中执行此操作: >>> import sys >>> print sys.path 我没有看到我的path在任何地方。

/ usr / bin / env关于shebang行的问题

问题 : 如果你把一个shell脚本粘贴到shebang行,内核是做什么的? 内核如何知道启动哪个解释器? 说明 : 我最近想写一个/ usr / bin / env的包装器,因为我的CGI环境不允许我设置PATHvariables,除了全局的(当然很糟糕!)。 所以我想,“好吧,让我们设置PREPENDPATH并设置围绕env的包装中的PATH ”。 由此产生的脚本(这里称为env.1 )看起来像这样: #!/bin/bash /usr/bin/env PATH=$PREPENDPATH:$PATH $* 这看起来应该工作。 在设置PREPENDPATH之后,我检查了它们是如何反应的: $ which /usr/bin/env python /usr/bin/env /usr/bin/python $ which /usr/bin/env.1 python /usr/bin/env /home/pi/prepend/bin/python 看起来绝对完美 ! 到现在为止还挺好。 但看看“Hello World!”会发生什么? # Shebang is #!/usr/bin/env python $ test-env.py Hello World! # Shebang is #!/usr/bin/env.1 python $ test-env.1.py […]

参数列表太长时如何正确使用“xargs”

有人可以给我一个在下面的操作使用xargs的例子吗? tar c $dir/temp/*.parse\ | lzma -9 > $dir/backup/$(date '+%Y-%m-%d')-archive.tar.lzma 我从bash得到错误“ / bin / tar:参数列表太长 ” 特别是我试图对大约4500个文件进行LZMA压缩; 所以这并不奇怪。 我只是不知道如何修改上面的使用xargs并摆脱错误! 谢谢。

Python的select()行为很奇怪

我在理解select.select的行为时遇到了一些麻烦。 请考虑下面的Python程序: def str_to_hex(s): def dig(n): if n > 9: return chr(65-10+n) else: return chr(48+n) r = '' while len(s) > 0: c = s[0] s = s[1:] a = ord(c) / 16 b = ord(c) % 16 r = r + dig(a) + dig(b) return r while True: ans,_,_ = select.select([sys.stdin],[],[]) print ans s […]