Articles of Linux操作系统

当一个信号来到时,杀死bash脚本前台儿童

我正在用这样的bash脚本包装一个fastcgi应用程序: #!/bin/bash # stuff ./fastcgi_bin # stuff 由于bash仅在前台脚本结束时执行信号陷阱,所以我不能仅仅kill -TERM scriptpid因为fastcgi应用程序将保持活跃状态​​。 我试过把二进制文件发送到后台: #!/bin/bash # stuff ./fastcgi_bin & PID=$! trap "kill $PID" TERM # stuff 但是,如果我这样做,显然标准input和标准输出没有正确的redirect,因为它不与lighttpds mod_fastgi连接,前台版本确实工作。 编辑:我一直在看问题,这是因为bashredirect/标准错误,当程序在后台启动,所以任何避免这种方式应该也解决了我的问题。 任何提示如何解决这个问题?

在cli中指定Python模块

我试图从Linux的SSH安全壳命令行环境运行一个python脚本,我试图导入argparse库,但它会给出错误:“ImportError:No module named argparse”。 我认为这是因为Linux shell所使用的Python环境没有argparse库,我想我可以修复它,如果我能findPython环境使用的库的目录,将argparse库复制到它,但我无法find该目录所在的位置。 我将不胜感激find这个目录的任何帮助(我想我可以将argparse库包含在我的python脚本所在的目录中,但是我更愿意在其他Python库所在的地方拥有argparse库,因为它应该)。

composer php安装/更新不起作用

我有一个Composer包pipe理器的问题。 系统是Ubuntu 12.04。 我不能使它工作。 我拉我的git项目,并尝试运行“composer php安装”,但似乎没有什么实际发生。 我只是得到一个信息 Installing dependencies (including require-dev) 那么实际上没有发生。 这是我使用-vvv参数运行的命令日志: 这里 有没有人有什么想法可能是错的? 我试图清除caching,但没有帮助。 我确信这个回购很好,因为我把它拉到我的Windows机器,它下载一切就好了。 'composer php诊断'也返回OK。 感谢您的任何提示。

哪个Linux发行版最适合在虚拟机中开发Mono应用程序?

我一直是Windows用户,现在我需要Linux来使用Mono创build一个应用程序。 哪种Linux发行版最适合我? 我将在虚拟机中使用它。

完整性检查SSH公钥?

我已经向用户询问了他们的公共“id_rsa.pub”ssh密钥,然后我把它放在“/home/theiraccount/.ssh/authorized_keys”,这样他们就可以通过SSHlogin服务器了。 我想自动化这个过程。 反正有理智检查他们给我的string(以编程或其他方式)? 我想validation,sshd可以读取文本,而且它看起来像一个有效的公钥(并没有被损坏)? 换句话说, id_rsa.pub文件的格式是什么? 如果有人在字段中input,我可以在表单处理程序脚本中写什么来validation它是否完整和正确?

从文件系统中“读短”,什么时候可以发生?

显然,read(2)系统调用通常可以返回比要求读取的字节更less的字节。 然而,很多程序假设在使用本地文件时,读取(2)永远不会返回比所要求的更less的内容(当然,除非文件更短)。 所以,我的问题是:在Linux上,在哪些情况下可以读取(2)返回小于从打开的文件中读取并且没有遇到EOF并且读取的数量最多只有几千字节时请求的内容? 有些猜测: 可以接收到的信号中断一个这样的读取,但不会使其失败? 不同的文件系统会影响这种行为吗? jffs2有什么特别的吗?

为什么我在这里得到一个SIGABRT?

我有这个代码段,我打开/closures一个文件多次(在一个循环中): for(i=1;i<max;i++) { /* other code */ plot_file=fopen("all_fitness.out","w"); for (j=0;j<pop_size;j++) fprintf(plot_file, "%lf %lf\n",oldpop[i].xreal[0],oldpop[i].obj); fclose(plot_file); /*other code*/ } 我在这里得到一个SIGABRT,跟踪如下: #0 0x001fc422 in __kernel_vsyscall () #1 0x002274d1 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #2 0x0022a932 in *__GI_abort () at abort.c:92 #3 0x0025dee5 in __libc_message (do_abort=2, fmt=0x321578 "*** glibc detected *** %s: %s: 0x%s ***\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:189 #4 0x00267ff1 […]

GRUB切换到保护模式吗?

我想问一下在启动过程中是否将GRUB切换到了保护模式,还是Linux内核呢。 而且我想问一下 – 内核本身(vmlinuz)是一个ELF还是纯二进制格式? 谢谢。

在Linux中使用signal.h编译错误

我正在编写一个必须处理信号的shell程序。 我的相关信号处理相关代码如下: #include <signal.h> … #include <sys/types.h> … void installSigactions( int, struct sigaction* ); void handler_function( int signal_id ); … /*define signal table*/ struct sigaction signal_action; /*insert handler function*/ signal_action.sa_handler = handler_function; /*init the flags field*/ signal_action.sa_flags = 0; /*are no masked interrupts*/ sigemptyset( &signal_action.sa_mask ); /*install the signal_actions*/ sigaction( SIGINT, &signal_action, NULL ); 编译给了我以下的警告和错误: […]

麻烦部署.WAR到tomcat

即时通讯在tomcat上部署一个战争文件时遇到麻烦。 我已经在我的Windows机器上的netbeans中写了一个webapp。 这一切运行良好。 我想要做的是部署应用程序在我的Linux计算机,充当我的服务器。 一旦构build应用程序,我将战争文件从我的项目目录中的dist文件夹复制到pendrive。 然后我把它复制到我的linux电脑的桌面上。 然后我启动tomcat并使用应用程序pipe理器浏览要部署的war文件,然后单击deploy。 我在浏览器顶部收到一条消息,说'OK'。 但如果我看我的terminal窗口中的我的tomcat输出,我有以下错误: 4/01/2011 5:09:07 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive Kingdoms.war 4/01/2011 5:09:07 PM org.apache.catalina.startup.ContextConfig init SEVERE: Exception fixing docBase for context [/Kingdoms] java.util.zip.ZipException: invalid CEN header (bad signature) at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:114) at java.util.jar.JarFile.<init>(JarFile.java:135) at java.util.jar.JarFile.<init>(JarFile.java:72) at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:72) at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48) at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70) at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104) […]