Articles of Linux操作系统

在shell脚本中创build一个结构(数据结构)

我真的是这个领域的初学者 我的问题是:我怎样才能创build一个结构在shell脚本(或bash,我不知道差异) 以C语言为例,我们可以简单地: struct name { __u8 x; __u8 y; signed short z; float t; float u; }; 是否有可能在shell中创build类似的东西? 为什么? 我需要复制一些值到一个/ proc文件..但我需要确定他们是12字节,以及他们的顺序,因为我想分配给他们在Linux内核模块 感谢您的任何有用的答案或提示

在这个过程中,怎么能告诉一个进程的父进程?

我知道getppid检索底层程序的父pid,但是你怎么能告诉这个程序呢? 我在/proc/[pid]找不到任何有用的东西,或者是否有任何有用的API可以使用? UPDATE 我的意思是,我正在用另一个进程来检查这些进程,所以getppid在这里不起作用

sedreplacestring中的数字

我可以replacestring中的文本,但只要我尝试并input数字就无法匹配。 注意这个[0-9]\+\是造成这个问题的原因。 这工作: sed -i "" -e "s/mySite-.js/mySite$current_timestamp.js/" template.php 这不: sed -i "" -e "s/mySite-[0-9]\+\.js/mySite$current_timestamp.js/" template.php 我很抱歉早些时候提出这个问题,但是我已经花了差不多一整天的时间在这个愚蠢的事情上,而且我疯了。

如何卸载旧版本的Ruby,这是一个明智的做法?

以root身份login时,我input ruby-v centOS服务器报告“ruby 1.9.3p392”。 这就是我要的。 但是,如果我把 rvmsudo ruby​​ -v 那么我会得到“ruby1.8.7”。 我不想使用这个旧版本,这是我的gitlab安装导致的问题。 我想删除它,并确保只使用v1.9,我该怎么做? 或者我应该离开它,但尝试并要求某些用户使用不同的版本? 此外,如果这样做弄乱了什么,是否有可能; a.see如果服务器上的任何东西需要v1.8? b。如果导致问题,请反省卸载?

为什么“NOT NULL”在MySQL客户端中不起作用

我正在使用版本5.5的MySQL客户端。 今天我尝试了“NOT NULL”来设置一个属性,在我的testing中只发现它不起作用。 有人帮忙解释一下吗? //Create Table CREATE TABLE state( state_cd char(2) NOT NULL, state_name varchar(30) ); //Insert an "Invalid" Record INSERT INTO state(state_name) values('Massachusetts'); //DB Operation succeeds!!! Query OK, 1 row affected, 1 warning (0.09 sec) //Check the table mysql> select * from state; +———-+—————+ | state_cd | state_name | +———-+—————+ | | Massachusetts | […]

如何将进程状态从睡眠状态更改为在Linux中运行?

我有一个python程序需要扫描一些大的日志文件来提取有用的信息。 在这个程序中,为了更好地利用服务器(运行Ubuntu 12.04 LTS,拥有64个内核和96 GB内存)的计算资源, 我创build了一个大小为10的进程池,并向这些池工作者应用服务器。 每个作业使用file.readlines()从几个大文件(每个大约file.readlines() ,共20个文件)中file.readlines() ,然后逐行分析以find有用的信息并将结果保存到字典中。 在所有文件被扫描和分析之后,结果字典被写入磁盘。 另外,在整个脚本中没有显式调用gc.collect() 。 我使用root账号在服务器上启动了这个程序,这些程序首先运行正常:这个程序的每个进程将占用大约3.8GB的内存,所以共有40GB 几个小时后, 其他用户启动另一个耗费内存的程序(也使用root帐户),它积极使用几乎所有的内存(占内存总量的99%),之后该程序被CTRL-Z中断, killall -9 process_name 但是,在这之后,我发现我的大部分池工的进程状态已经改为S,这些睡眠进程的CPU使用率降为0.根据man top : The status of the task which can be one of: 'D' = uninterruptible sleep, 'R' = running, 'S' = sleeping, 'T' = traced or stopped, 'Z' = zombie 我使用ps -axl命令来检查进程正在hibernate的内核函数的名称, 事实certificate这些poolworker进程在_fastMutex上_fastMutex 。 这种情况会持续很长一段时间(进程状态现在仍然是S),我不想重新启动我的进程再次扫描所有文件, 我怎么能改变这些进程从睡眠状态到运行?

如何使用SSH安装bitnami堆栈(.run文件)

我正在尝试安装.run文件,我从https://bitnami.com/redirect/to/39461/bitnami-wordpress-3.9.2-0-linux-installer.run 但是,当我尝试运行它没有任何反应(我也使用了文本模式) 如何使用SSH在Linux中安装.run文件?

删除报价周围的数字

我有一个文件的行看起来类似于: "somestring": "20.000", 我想删除20,000左右的报价。 其他用例是 "somestring": "20", "somestring": "blahhhah 3", "somestring": "", 这应该给 "somestring": 20, "somestring": "blahhhah 3", "somestring": "", 识别数字的明显正则expression式为[0-9]+和[0-9].[0-9]+为小数。 我被告知这是可能的与sed命令,因为它可以反向引用,但是我不知道如何使用sed命令。 有人可以请我提供任何Linux命令来完成这个?

使用相同的密钥循环访问关联数组

我目前正试图循环通过一个关联数组。 该数组包含具有相同键的值。 但是,当我尝试循环时,我只得到一组结果。 我怎样才能遍历包含相同的密钥的所有值? #!/bin/bash/ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" ) for k in "${!details[@]}" do echo $k — ${details[$k]} done 结果: 猫— sphynx 狗—牛头犬 鸟—鹦鹉

堆alignment的记忆保护神秘地工作

所以我试图检查,如果我可以正确地使用mprotect更改mmapped分配内存的访问权限,这就是我写的: #include <stdio.h> #include <sys/mman.h> #include <malloc.h> #include <unistd.h> void main() { int pagesize; pagesize = getpagesize(); void *p; p = malloc(pagesize); getchar(); int q = posix_memalign(&p, pagesize, pagesize); getchar(); int a = mprotect(p, pagesize, PROT_READ | PROT_WRITE | PROT_EXEC); getchar(); free(p); } 现在每个函数后,我使用getchar来分析我的内存段使用cat /proc/<pid>/maps文件,这就是我得到:(只显示关于堆的信息,因为这是我唯一担心的) posix_memalign : 01776000-01798000 rw-p 00000000 00:00 0 [heap] mprotectfunction之后: 01776000-01778000 […]