Articles of unix

有人可以解释下面的内存分配C程序的性能行为吗?

在我的机器上,时间A和时间B交换取决于是否定义了A (它改变了调用这两个calloc的顺序)。 我最初将其归因于寻呼系统。 奇怪的是,当使用mmap而不是calloc ,情况更加糟糕 – 两个循环都花费了与预期相同的时间。 从strace可以看出, calloc最终导致了两个mmap ,所以没有返回已经分配的内存。 我正在英特尔i7上运行Debiantesting。 #include <stdlib.h> #include <stdio.h> #include <sys/mman.h> #include <time.h> #define SIZE 500002816 #ifndef USE_MMAP #define ALLOC calloc #else #define ALLOC(a, b) (mmap(NULL, a * b, PROT_READ | PROT_WRITE, \ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)) #endif int main() { clock_t start, finish; #ifdef A int *arr1 […]

将文本文件中的所有行用引号(“something”)括起来

我有一个包含空格的目录列表。 我需要用“'来包围它们,以确保我的批处理脚本能够正常工作。 如何用一个'和一个'(引号)来包围每一个新行。 例如 文件1: /home/user/some type of file with spaces /home/user/another type of file with spaces 至 文件2: '/home/user/some type of file with spaces' '/home/user/another type of file with spaces'

系统日志性能是否可以改进?

我们有一个使用syslog机制的Linux应用程序。 花了一个星期的时间,试图找出为什么这个应用程序的运行速度慢于预期,我们发现,如果我们消除了系统日志,并直接写入日志文件,性能显着提高。 我明白为什么syslog比直接文件写入慢。 但我想知道:有没有办法configurationsyslog来优化其性能?

你怎么能拥有一个隐藏设备的所有权?

我想要拥有已经插入的隐藏设备的所有权,消耗它的输出,同时防止其他人(X11或terminal)消耗它。 如果我能帮上忙,我不想假装成为terminal,而是要垄断一个特定的隐藏或字符设备。 这个想法是,一些隐藏设备可能被x /terminal识别为鼠标/键盘,但第二个鼠标或键盘可以用于其他的东西,但要做到这一点,你需要确保他们不发送虚假input到开放的terminal。 有没有人有任何见解,如何做到这一点?

* nix是什么意思? 和Ruby有什么关系?

刚才在面试中看到这个问题……我想这跟UNIX发行版有关,但我不确定。 在这里或在维基百科找不到它,所以我问。 什么意思 ? 和Ruby有什么关系? 因为这个问题是关于Ruby的。

使用Rsync包含和排除选项以包含模式的目录和文件

我有问题得到我的rsync语法的权利,我想知道如果我的scheme实际上可以用rsync处理。 首先,我已经确认rsync在我的本地主机和远程主机之间正常工作。 在目录上进行直接同步是成功的。 这是我的文件系统的样子: uploads/ 1260000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1270000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1280000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 我想要做的只是在子目录中以“file_11_”开头的文件运行rsync,我希望能够运行一个rsync作业来同步子目录中的所有这些文件。 这是我正在尝试的命令: rsync -nrv –include="**/file_11*.jpg" –exclude="*" /Storage/uploads/ /website/uploads/ 这会导致0个文件在我的空运行中被标记为传输。 我试过了各种其他的–include和–exclude语句的组合,但是仍然没有得到任何结果,或者得到了一切,就好像没有包含或排除选项一样。 任何人有任何想法如何做到这一点?

这个脚本不会按年龄正确sorting

我的脚本要求input姓名,电话号码和出生date,然后将这些详细信息修改为一个名为“birthday.csv”的逗号分隔值文件。 然后按出生datesorting“birthday.csv”。 然后显示新sorting的文件。 它还计算每个人的年龄和文件中的条目数量。 我的问题是,它包含所有的信息,但是在打印内容之前,它不会对文件进行sorting。 这里是代码: a=0 while [ $a -lt 2 ]; do echo Please enter a first name read firstName echo Please enter last name read lastName echo Please enter phone number read phoneNumber echo Please enter date of birth – format dd/mm/yyyy read dob echo "$firstName,$lastName,$phoneNumber,$dob" >> Birthdays.csv echo If you would […]

如何从python脚本中的shell脚本返回一个值

我有一个python脚本,它需要一个shell脚本的值。 以下是shell脚本(a.sh): #!/bin/bash return_value(){ value=$(///some unix command) echo "$value" } return_value 以下是python脚本: Import subprocess answer = Subprocess.call(['./a.sh']) print("the answer is %s % answer") 但它不工作。错误是“ImportError:没有名为子stream程的模块”。 我想我的版本(Python 2.3.4)是相当古老的。 在这种情况下是否有可以替代的子过程?

为什么if 在grep -q时不起作用?

我无法让grep在if语句中正常工作。 在下面的代码段中,if-check总是成立(即没有find该单词),并且程序打印NOT FOUND,即使这些单词已经在〜/ .memory中。 for (( i=0; i<${#aspellwords[*]}; i++)); do if [ !$(grep -q "${aspellwords[$i]}" ~/.memory) ]; then words[$i]="${aspellwords[$i]}" printf "\nNOT FOUND\n" fi done 但是,当我testing下面的代码代替以前的段: for (( i=0; i<${#aspellwords[*]}; i++)); do if grep -q "${aspellwords[$i]}" ~/.memory; then echo FOUND IT; fi done 它工作得很好,发现没有任何问题的话。 那么第一部分代码有什么问题呢?

如何杀死所有的subprocess而不杀死父进程?

我有一个脚本,在开始时运行一个后台进程,然后到最后需要停止该后台进程及其subprocess,然后执行一些其他任务,然后在必要时返回错误代码。 我该怎么做呢? 我已经看到了几个例子如何杀死包括父进程在内的整个树(例如kill 0 ),但我希望主脚本继续运行并返回正确的错误代码。 例如: ./some_process_with_child_processes & ./do_stuff kill $! # doesnt kill child processes! ./do_other_stuff exit 5