Articles of Linux操作系统

简单的C代码可以在HPUX上正常工作,但是Linux上的段错误。 为什么?

我很长时间没有做过任何严肃的C,希望能够快速解释一下。 以下代码在HP / UX上编译并运行良好。 它在GCC 4.3.2上编译没有任何警告(甚至是在gcc-Wall中),但在Linux上运行时却是segfaults。 谁能解释为什么? #include <stdio.h> int main() { char *people[] = { "Abigail", "Bob" }; printf("First: '%s'\n", people[0]); printf("Second: '%s'\n", people[1]); /* this segfaults on Linux but works OK on HP/UX */ people[1][0] = 'R'; printf("First: '%s'\n",people[0]); return(0); }

如何将目录path转换为唯一的数字标识符(Linux / C ++)?

我正在调查的方式采取一个目录(文件夹),并派生某种forms的唯一的数字标识符。 我调查过“string哈希”的方法,但是, 鸽子洞原则意味着永远不可能为每一个string派生一个真正唯一的数字。 string到唯一哈希是不好的。 我最近一直在调查其他方法来实现我的目标,因此有以下问题要问: 目录时间戳 – 他们有多“独特”? 这里所描述的“stat”报告的时间戳记是什么样的(第二篇文章)? 如果分辨率足够小,是否有可能多个文件夹在Linux系统上共享完全相同的时间戳? 如果任何人有其他方法/技术,他们想分享,我会很高兴听:) 编辑1为了澄清我的用例,以回应迄今为止发布的答案:我正在Android平台上工作,所以文件系统没有链接到任何其他(除了Micro SD卡等可移动媒体除外)。 我将每个path插入数据库,但试图避免查询表时string比较。 地图/ hashmaps的使用不是一个选项在这里。 是的,path本身是唯一的,但理想情况下,我需要一个数字标识符,可以用来查询表,而不是path本身。 每个path的标识符也必须是唯一的。 我已经用std :: collat​​e进行了实验,但是发现哈希中有很多碰撞(一个数据集有20,000条path,大约有100个碰撞)。 更令人惊讶的是,每次我的应用程序运行时,哈希似乎都大不相同。 我想知道它是否以某种方式播种? 非常感谢,P

为什么在Linux性能计数器中指令的数量是不确定的

为了能够剖析应用程序运行时的二进制文件实际上将在模拟器(NS-3 / DCE)下运行。 我想使用Linux性能计数器,我预计指令计数的应用程序没有非确定性的来源是确定性的。 根据linux性能计数器,我不能再犯错了,我们举一个简单的例子: $ (perf stat -c — sleep 1 2>&1 && perf stat -c — sleep 1 2>&1) |grep instructions 669218 instructions # 0,61 insns per cycle 682286 instructions # 0,58 insns per cycle 1)这个非确定性的来源是什么? 这是否源于CPU中的低级分支预测和其他引擎? 2)还有一个问题,是否有办法知道提供给CPU的指令数量(与示例输出中的指令数量形成对比),以确定性地获取执行代码的数量?

Tensorflow推荐的系统规格?

我正在开始在我的RHEL 6.5盒子上安装Tensorflow。 但事实certificate,Tensorflow需要glibc> = 2.17,而rhel 6.5的默认glibc是2.12。 我想知道是否有人可以用最低/推荐的tensorflow系统规范来帮助我?

比较bash脚本中的md5和

我试图用md5sum比较bash脚本中的两个文件。 目标是使用一个文件的.md5来检查另一个文件的md5sum 。 我的谷歌search如何以正确的方式做到这一点,并没有告诉我如何做到这一点。 烧掉电子邮件就像你期望的那样工作。 现在我试图让它在失败而不是成功的情况下发送一封电子邮件。 也许列出从.md5文件收到的结果和损坏文件的实际md5sum。 我会解决这个问题,最终,但是这有点令人困惑,因为我试图弄清楚我要去哪里错了。 Shellcheck指出代码看起来不错,但我没有得到我期望得到的结果。 几个StackOverflow链接,我检查了一下,看看是否可以工作: 一 二 这里是我的bash脚本的内容,它的原始forms: #!/bin/bash cd /home/example/public_html/exampledomain.com/billing/system/ || exit rm -rf GeoLiteCity.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | gunzip > GeoLiteCity.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz | gunzip > GeoLite2-City.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.md5 md5sum GeoLite2-City.dat > md5sum.txt file1="md5sum.txt" file2="GeoLite2-City.md5" if [ "`cat $file1`" != "`cat $file2`" ]; then mail -s […]

无法从putty运行.py文件,语法错误:单词意外(期待“)”)

我对Python和Linux都是新手,因此请尽可能简单的解释,尽可能less的假设知识,但我更愿意投入时间和精力去学习。 我有一个运行Linux的Raspberry Pi 2(Model B V1.1)。 我通过腻子与这个pi交互。 我试图创build一个简单的竞争性reflection游戏,由2个button和一个LED组成。 我的目标是让LED在短时间内亮起,而第一个按下button的玩家赢得胜利。 我正在用python写这个脚本(特别是2.7.3) 我的问题是,我无法从putty内运行任何.py文件,我总是收到相同的错误: Syntax error: word unexpected (expecting ")") 要确定问题是否是我的代码中的错误,我创build了一个非常非常简单的.py文件,以检查是否发生相同的错误,并确实如此。 所以我现在相信,即使我的代码是function,一些阻止我运行任何.py文件。 我正在使用的过程如下: 首先我从putty创build一个新的python文件: sudo nano test.py 接下来我input我的Python代码(现在非常简单,因为我无法获取任何.py文件来运行) for each in range(5): print 'hello' 然后按CTRL + O写入文件,按回车键,然后按CTRL + X退出 最后,我使用可执行文件 sudo chmod u+x test.py 并尝试运行它 sudo ./test.py 再次发生类似的错误 Syntax error: "(" unexpected 然后我决定直接在python shell中input代码 sudo python >>>for each […]

如何使用QEMU学习ARM Linux内核开发?

我想学习它像开发一些设备驱动程序等,并使用QEMU这一点,因为我没有ARM的硬件板如beagle板。 你们有什么build议? 我可以使用Qemu模拟器学习ARM内核上的Linux内核吗? 或者我应该尝试的其他选项?

长时间运行的PHP脚本在通过exec()调用时停止,但在通过CLI调用时结束

我有一堆需要很长时间才能完成的脚本。 其中一些可能需要长达20分钟。 有一个执行这些PHP脚本的Bash脚本。 当我以root的身份通过CLI调用这个Bash脚本时,所有的PHP脚本都没有任何问题。 但是当我用PHP的exec()函数通过浏览器调用Bash脚本时,脚本在7/8分钟后突然停止,而不会引发任何错误。 对于通过Apache / PHP执行的进程或脚本可以运行的时间是否有一定的限制? 我试过了: set_time_limit(0) exec('nohup /path/to/bashscript') exec('/path/to/bashscript | at now') 最后两个尝试过的解决scheme已经被长期运行脚本有问题的其他人推荐,但是它根本没有帮助我。 注意:执行PHP脚本的Bash脚本是CakePHP的控制台应用程序。 我必须通过这个Bash脚本执行PHP脚本来利用CakePHP的所有function(模型,shell方法等)。 我需要能够通过浏览器调用Bash脚本,并让它在后台运行。 服务器是VPS,并安装了WHM / cPanel。

使用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% / […]