Articles of Linux操作系统

使用stdin通过/ proc / {pid} / fd / 0发送命令到java -jar

我试图使用/ proc / {pid} / fd / 0发送一个命令到我的世界服务器jar,但服务器不执行命令。 要复制我正在尝试做的事情,你可以在基于Debian的机器上(也可能是其他的Linux分发版)来做这件事。 我用什么来testing这个: Ubuntu 14.04 minecraft_server.jar (testing1.8) OpenJDK运行环境(使用default-jre-headless安装) 第一个控制台 $ java -jar minecraft_server.jar nogui 响应:[…服务器启动并等待input] say hi 响应:[19:52:23] [Server thread / INFO]:[Server] hi 第二个控制台 现在,当我切换到第二个控制台,与服务器仍然在第一我写: echo "say hi2" >> /proc/$(pidof java)/fd/0 一切都很好,直到我切换回第一个控制台。 我可以看到文字“说hi2”但服务器没有识别它。 我可以在第一个控制台再次写入另一个命令,就好像从第二个控制台input的文本还没有存在。 为什么是这样? 更重要的是,如何以正确的方式使用/ proc / {pid} / fd / 0将命令发送到java jar文件? 我不知道这是否是某种我不知道的Java事物,如果我在执行服务器时可以使用某个标志或某些东西,或者它是服务器JAR本身就是问题。 我知道你可以使用screen,tail -f或者某种服务器封装来实现这个function,但这不是我所追求的。 我想以某种方式发送一个使用这个方法的命令。 […]

使用python计算百分比inode使用率

我正在尝试计算Python中inode使用的百分比。 这里是我的示例python代码 st = os.statvfs(path) free = (st.f_bavail * st.f_frsize) / 1024 total = (st.f_blocks * st.f_frsize) / 1024 used = ((st.f_blocks – st.f_bfree) * st.f_frsize) / 1024 total_inode = st.f_files # inodes free_inode = st.f_ffree #free inodes # df -i / Filesystem Inodes IUsed IFree IUse% Mounted on none 8257011 69850 8187161 1% / […]

使用fork()在C(不是C ++)中创build3个孩子

嗨,我一直在制定一项计划,让孩子们分叉,然后再从每个孩子那里分娩更多的孩子,但这不是我需要帮助的。 当我运行我的程序(在这里它是一个function,但工作原理是一样的)我应该有一个父母(PPID)产卵3个孩子(PIDS = 1,2,3),但我得到的是相同的PID和PPID 3次(我现在的代码),或者在我得到3个父母之前,每个父母都有一个孩子,PPIDS与PIDS不同,但PPID与以前的孩子PID一样。 在我最近的尝试中,从不在父子(父亲)的信息上方显示孩子(儿子)。 它应该看起来像这样 [dad] hi am I PID 1234 and I come from ####(dont care what this number is) [son] hi i am PID 1111 and I come from PPID 1234 [son] hi i am PID 1112 and I come from PPID 1234 [son] hi i am PID 1113 and I […]

生成(非常)大的非重复整数序列,无需预先混洗

背景 我有一个简单的媒体客户端/服务器,我写了,我想产生一个非显而易见的时间价值,我发送每个命令从客户端到服务器。 时间戳会有相当的数据(纳秒分辨率,即使由于现代操作系统中定时器采样的限制,它不是真正准确的),等等。 我试图做的(在Linux上,C语言)是生成一个n位值的序列(让我们假设数据现在存储在128位的int数组元素中),没有重叠/碰撞值。 然后我将一个伪随机的128位值/数字作为“salt”,将其应用于时间戳,然后开始向服务器发送命令,递增预先腌制/预先哈希的值。 时间戳大小的原因是因为时间戳可能需要适应非常长的时间。 题 我怎么能用一个初始的盐值来完成这个序列(不碰撞)呢? 听起来和我的目标一致的最好的方法是从这篇文章中注意到 : 如果选项1对您来说不够“随机”,则使用全局(32位)计数器的CRC-32哈希值。 在N位整数和它们的CRC-N之间存在1对1的映射(双射),所以唯一性仍将得到保证。 但是,我不知道: 如果可以(有效地)扩展到128位数据。 如果某种加法/乘法的盐值为序列提供初始种子,将会扰乱它或引入冲突。 跟进 我意识到我可以使用来自libssl或类似的128位随机哈希,但我希望使用相同的盐值的远程服务器能够将散列的时间戳转换回它们的真实值。 谢谢。

x86_64程序集execve * char 系统调用

我试图进入一些Linux 64位x86程序集,而不使用标准的库,但是我有一些问题处理提交给我的程序(argv)的参数。 我会认为(基于文档) rsp标志着argc qword的开始,而[rsp + 8]将是argv。 不幸的是,情况并非如此,下面的(删节的)程序会导致EFAULT (Bad address) 。 sys_execve equ 59 sys_exit equ 60 section .data child db "/bin/sh", 0 global _start section .text _start: mov rdi, child ; #1 filename mov rsi, [rsp + 8] ; #2 argv mov rdx, 0 ; #3 envp = 0 mov rax, sys_execve ; execve […]

GlassFish 4(linux)部署错误

我在Windows环境下为我的Java应用程序创build了.ear文件。 另外,我可以成功地将它部署到GlassFish 4.但是,将相同的.ear部署到linux GlassFish 4不起作用,因为我收到错误(请参阅下面的日志)。 我的环境详情: Windows 7,jdk1.8.0_45,用于项目编译和GlassFish 4.1.1 红帽企业Linux服务器,内核2.6.32,x86_64,GlassFish服务器开源版本4.1(内部版本13),java-1.8.0-openjdk-1.8.0.31-1.b13.el6_6.x86_64 我的日志(更新): [2016-03-09T14:40:44.697+0200] [glassfish 4.1] [WARNING] [] [com.sun.jdo.codegen.ejb.cmp] [tid: _ThreadID=285 _ThreadName=admin-listener(19)] [timeMillis: 1457527244697] [levelValue: 900] [[ JDO83007: Caught Exception while compiling generated classes: ]] [2016-03-09T14:40:44.704+0200] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=285 _ThreadName=admin-listener(19)] [timeMillis: 1457527244704] [levelValue: 1000] [[ Exception while invoking class org.glassfish.ejb.startup.EjbDeployer prepare method]] [2016-03-09T14:40:44.704+0200] […]

在Linux上安装Eclipse – 未设置GtkWindow的屏幕

我在Linux服务器上安装了用于Java EE开发人员的32位Linux版本的Eclipse(http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr1),并且遇到了问题从linux机器启动eclipse。 我编辑了我的eclipse.ini并添加了vm javapath(见下面): 例外: (Eclipse:22632):Gtk-WARNING **:未设置GtkWindow的屏幕; 在使用窗口之前,您必须始终设置GtkWindow的屏幕 eclipse.ini文件: -startup plugins / org.eclipse.equinox.launcher_1.2.0.v20110502.jar –launcher.library plugins / org.eclipse.equinox.launcher.gtk.linux.x86_1.1.100.v20110505 -product org。 eclipse.epp.package.jee.product –launcher.defaultAction openFile -showsplash org.eclipse.platform –launcher.XXMaxPermSize 256m –launcher.defaultAction openFile -vm / opt / bin / java -vmargs -Dosgi.requiredJavaVersion = 1.5 -XX:MaxPermSize = 256m -Xms40m -Xmx512m (Eclipse:22632):Gtk-WARNING **:未设置GtkWindow的屏幕; 在使用窗口之前,您必须始终设置GtkWindow的屏幕

如何检查一个文件是否存在c

我有核心文件生成与附加到其名称的PID或有时只有名称的核心。 我需要检查一个文件是否以名称core.pid或core存在。 我已经尝试使用stat() ,我使用pathstring作为/tmp/core* ,但失败。 你能不能让我知道如何解决这个问题。谢谢你的时间。

将X11窗口保持在另一个窗口的顶部

我有两个x11窗口需要保持一定的堆叠顺序,即一个窗口需要保持在另一个之上。 我不在乎应用程序之外的其他窗口。 通常情况下,我会为此使用父/子,但是由于X11将子窗口剪切到父窗口,所以我必须伪造它。 我已经尝试了各种方法来保持和/或调整窗口堆栈以保持正确的顺序。 但是,WM忽略了除XRaiseWindow()之外的所有内容,这太暴力了,并导致其他窗口出现问题。 所以问题是我如何设置两个窗口之间的堆栈,或者有没有办法设置父/子不会导致父子剪辑的孩子?

中间button粘贴删除的文字在崇高3

(注意:这个问题不同于在Sublime Text 3中的中间button上粘贴光标 ) 我在Linux上使用Sublime Text 3(但它也适用于Sublime Text 2)。 在emacs和vim中,可以突出显示一些文本(将其复制到剪贴板),删除文本,然后使用鼠标中键将其粘贴到其他位置。 这是我平常移动一些文本的工作stream程(select-> delete-> middleclick)。 然而,在崇高,它不会粘贴任何东西,即中间button粘贴function只适用于非删除文本,显然。 有谁知道如何使它与删除的文字呢?