Articles of unix

使用sed删除一段文本

我有一个如下所示的文本块: <!– BOF CLEAN –> … a bunch of stuff <!– EOF CLEAN –> 我想删除这整个块。 什么是sed命令?

Crontab每5分钟

我怎么能告诉crontab每5分钟运行一次,但是从一小时的第二分钟开始。 换句话说,我想在minute % 5 = 2时执行我的脚本。 例如,我的脚本应该运行在: 08:02 08:07 08:12 08:17 … 谢谢你的帮助!

合并/连接两个表快速的Linux命令行

让我们说我有两个相对较大的制表符分隔的文件file1.txt,file2.txt。 file1.txt id\tcity\tcar\ttype\tmodel file2.txt id\tname\trating 让我们假设file1.txt有2000个唯一的ID,因此有2000个唯一的行,而file2.txt只有1000个唯一的行,因此有1000个唯一的ID。 有没有合并这两个表的方法? 案例1.通过file1.txt中的id合并它们,当file2.txt中没有id时,NAs将被填充。 案例2。 在file2.txt中通过id合并它们,其中只有file2.txt中的id将被打印出来,包含file1.txt和file2.txt中的字段。 注意:合并的新文件也应该是制表符分隔的文件,也是一个头文件。 笔记2。 如果没有标题,我也会很感激。 谢谢!

如何findunix上没有日志文件的死进程的原因?

这是一个面试问题。 开发者开始了一个过程。 但是当一个客户想要使用这个过程时,他发现这个过程并没有运行。 开发人员login,发现过程中死亡。 开发者怎么知道什么是错的? 跟进:应该将日志写入文件的正在运行的进程。 但是文件中没有日志。 开发者怎样才能弄清楚在这个过程中发生了什么? 我想:如果程序可以重新运行,我将使用gdb来跟踪进程。 如果不是,请检查进程(应用程序)中的输出文件。 或者,添加打印到代码。 但是,还有其他的方法可以通过引用操作系统生成的一些信息来实现吗?

使用分散处理来处理短读/写操作的技巧?

Scatter-gather – readv()/ writev()/ preadv()/ pwritev() – 在单个系统调用中读取/写入可变数目的iovec结构体。 基本上它从0到iN依次读/写每个缓冲区。 然而,根据文档,readv / writev调用的返回次数也比请求的less。 我想知道是否有一个标准/最佳做法/优雅的方式来处理这种情况。 如果我们只是处理一堆字符缓冲区或类似的东西,这不是什么大问题。 但其中的一个优点是使用分散收集结构和/或离散variables作为个人iovec项目。 如何处理readv / writev只读取/写入结构的一部分或长度的一半或类似的情况。 下面是我正在做的一些人为的代码: int fd; struct iovec iov[3]; long aLong = 74775767; int aInt = 949; char aBuff[100]; //filled from where ever ssize_t bytesWritten = 0; ssize_t bytesToWrite = 0; iov[0].iov_base = &aLong; iov[0].iov_len = sizeof(aLong); bytesToWrite += iov[0].iov_len; […]

从multithreading应用程序生成进程

我有一种情况,我需要从一个非常大的multithreading应用程序中产生一个辅助进程,但是我没有完全的控制权。 现在我正在使用fork() / exec() 。 这在很多情况下都是有效的,但是在某些情况下,在exec()发生之前,孩子会奇怪地崩溃。 我怀疑这是因为fork()multithreading应用程序通常被认为是一个真正的坏主意。 我真的很喜欢以primefaces方式启动一个进程的方式,没有fork()父进程:所有文件描述符closures,环境设置我想要的方式,CWD设置等。这应该避免所有的fork()我的multithreading父应用程序,并处理文件描述符inheritance,等posix_spawn()应该是理想的。 不幸的是,在Linux上, posix_spawn()使用fork()和exec() 。 vfork()被定义为挂起父进程,直到subprocess调用exec() 。 这似乎更像我想要的,但我的理解是, vfork()通常被认为是一个历史遗迹这些天,相当于fork() —这仍然是这种情况? 处理这个问题最糟糕的方式是什么? 注意: 我不能在任何线程启动之前产生我的进程(因为我不能在那个时候运行代码) 由于外部的要求,我不能重新devise我的应用程序不需要帮助程序 在产卵辅助过程之前,我不能暂停所有的线程,因为它们不属于我 这是在Linux上。 涉及Java,但我所有的代码都在C

如何将string转换为gnuplot中的数字

有没有办法将表示数字的string(科学格式)转换为gnuplot中的数字。 即 stringnumber="1.0e0" number=myconvert(stringnumber) plot [-1:1] number 我可能使用shell命令searchmyconvert。

awk一个class轮只select基于列值的行

我想读取filein.txt (制表符分隔),并输出一个fileout.txt只有与给定列的值相匹配的行,并消除被查询的列。 即 filein.txt #name\thouse\taddress roger\tvictorian\t223 dolan st. maggie\tfrench\t12 alameda ave. kingston\tvictorian\t224 house st. robert\tamerican\t22 dolan st. 让我们说,我想只select房屋是victorian风格的行,然后我的fileout.txt应该是这样的: fileout.txt #name\taddress roger\t223 dolan st. kingston\t224 house st.

无法在Unix中删除目录

在Unix中我有一个看似不可删除的目录,其中包含一些名称以.panfs开头的隐藏文件。 我无法使用以下任一命令将其删除: rm -R <dir> rm -Rf <dir> 有什么想法吗?

GCC选项的共享和-WI共享区别

我知道-Wl,-shared是ld的一个选项。 我见过有人这样编译, $ gcc -shared -Wl,-soname,libtest.so -o libtest.so *.o 还有一些人喜欢这个 $ gcc -Wl,-shared -Wl,-soname,libtest.so -o libtest.so *.o 所以我想知道-shared和-Wl,-shared是否有区别。 谢谢。