我需要找到所有包含特定字符串模式的文件。想到的第一个解决方案是使用带有xargs grep的find piped:
但是如果我需要找到跨越多行的模式,我会被卡住,因为香草grep找不到多行模式。所以我发现了哪个代表与Perl兼容的正则表达式grep
例如,您需要查找“\u name”变量后跟“\u description”变量的文件:
find . -iname '*.py' | xargs pcregrep -M '_name.*\n.*_description'
提示:您需要在图案中包含换
我希望能够用C检查我的Linux机器硬件。
如何获取C中dmesg中显示的信息?
例如,对于键盘,消息是输入的:在转换后的SET2键盘上为/devices/platform/i8042/serio0/input/input0
我想在我的程序中得到转换集2处的标签和路径/devices/platform/i8042/serio0/input/input0。
你知道怎么做吗
amit使用klogctl调用
最好是自己阅读源代码,可以在这里下载:您还可以在/proc中查看文件的内容
/proc/ver
我想这样做:
运行命令
捕获输出
选一行
选择该行的一列
举个例子,假设我想从$PID获取命令名(请注意,这只是一个例子,我并不是说这是从进程id获取命令名的最简单方法-我真正的问题是另一个命令的输出格式我无法控制)
如果我运行ps我会得到:
PID TTY TIME CMD
11383 pts/1 00:00:00 bash
11771 pts/1 00:00:00 ps
现在我做了ps | egrep 11383并得到
11383 pts/1 00
我一直在研究x86上的Linux elf可执行文件,主要使用IDA,但
还有gdb。我注意到的一件事是函数总是被加载的
在单词对齐的地址?有人知道原因吗?
我不知道启动x86指令的任何要求
在对齐的地址。而且它不能是由于页面对齐原因造成的
页面边界仍然可以位于函数中的任何位置
如果有任何见解,我将不胜感激
谢谢。对于某些体系结构,数据的对齐方式决定了每个操作可以复制的数据量。例如,尝试从地址0x4000复制32位可能需要一个32位移动操作,而从0x4001复制32位可能需要4个8位移动操作。此外
我正在关注这一点,这就像是提交后的hello world
我正在使用Ubuntu 10.04。我安装了svnnotify并运行了$哪个svnnotify哪个输出:
/usr/bin/svnnotify
因此,我将Turrial中的路径从/usr/local/bin/svnnotify更改为/usr/bin/svnnotify
我还试着换了一行:#/bin/sh至#/bin/bash因为bash是ubuntu 10.04中的登录shell
我尝试以教程最初的方式运行它,进行了更改,并将两者结合起来
(通常称为C10K问题)
对于这个问题的解决方案,是否有更现代的评论(最近更新:2006年9月2日),特别关注Linux(epoll、signalfd、eventfd、timerfd…)和libev或libevent之类的库
讨论现代Linux服务器上所有已解决和尚未解决的问题的内容?巧合的是,就在几天前,编程Reddit或Hacker News提到了这篇文章:
在Java的早期,我的C编程朋友嘲笑我用阻塞线程进行socket IO;当时,别无选择。如今,拥有丰富的内存和处理器,这似乎是一个可
我在尝试推入git时遇到了以下问题:
error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://<repo url>/<repo dir>
! [remote rejected]
我为Ubuntu9.10 server edition编写了一个启动脚本,它在启动时启动,并对路径中指定的目录进行rsync,我以旧的方式启动,从init.d链接脚本并将其置于运行级别,它正在工作,所以我可以在启动时启动它,但过了一段时间,我的脚本的服务没有运行。5分钟后,当系统启动时,它会在中间崩溃,脚本中的代码只是一行rsync,我确信这不是问题所在,因此我必须再次调用脚本来启动It服务?这有什么问题?有人能帮忙吗?我没有足够的信息来解决您的问题,但我建议您将rsync的stderr导入日志
我想知道是否有一种方法可以让bash脚本向控制台显示数据并持续更新它。与top的功能非常相似,但形式更简单。watch-n1
watch -n 1 <your-command>
从手册页:
定期执行程序,全屏显示输出
你需要用诅咒来达到这个目的。这里有一篇关于的详细文章。您可以使用“while true/clear”-循环不断更新屏幕,如:
#!/bin/bash
while true
do
clear
echo "your output"
uptime
sleep 5
done
用下面的命令我可以找到最大的目录
find <directory> -printf '%s %p\n' |sort -nr | head
find-printf“%s%p\n”排序-nr头
但是有没有办法在目录中的所有子目录中找到最大的文件?为文件指定-type f:
find -type f -printf '%s %p\n' |sort -nr | head
使用刚才发出的命令,您将获得最大的文件。如果要递归地汇总目录中每个文件的大小,可能需要使用'du'命令 du-xak
我发现了以下使用bash的CGI工作示例。如果我把前两行改成
#!/bin/sh
echo "Content-type: text/html\n\n"
随着脚本停止工作,当我在浏览器中浏览脚本时,脚本底部声明的“foo”、“bar”和“foobar”将消失
你知道我怎样才能让同一个例子与sh一起工作吗?实际上,我需要在一个嵌入式设备上运行这样一个例子,我没有bash,只有sh
#!/bin/bash
echo -e "Content-type: text/html\n\n"
echo "
&l
我没有.bashrc文件,我想创建一个,但如何创建?基本.bashrc文件包含什么?我在Linux Mint 12上
我想要一个.bashrc文件,因为我已经为virtualenv创建了一个文件夹,我想加载virtualenvwraper如果你不知道放什么进去,为什么要一个呢?如果您确实希望在每个shell(或登录shell)中执行某些操作,则只需要.bashrc(或.profile或.bash\u profile)
但是您基本上可以将任何bash命令放在这些文件中。A。bashrc文件包含您在
我正在尝试在Linux(CentOS)服务器上设置SVN存储库
我安装了svn,为svn创建了一个组并添加了用户。
我还授予该组权限
但是,我无法从服务器外部结账(即在使用Ortoise的windows机器上)。我不断得到:
Unable to connect to a repository at URL
'svn+ssh://user@xxx.xxx.xxx.xxx/project'
Network connection closed unexpectedly
但是,如果我使用相同的用户名/
我正在将pro*c代码从UNIX移植到LINUX。在其中一个应用程序代码中,调用了regex()和regcmp()函数。这些函数在LINUX中找不到。LINUX中也有regexec()和recomp()函数,但它们与regex()和recmp()不同。这方面有什么帮助吗?标准C库提供了regcomp和regexec,这可能正是您需要的。请参阅regex手册页(键入man3 regex)
还有其他更具特色的正则表达式实现,例如(可能已经在您的系统上可用) linux中没有库。是否有可以安装libg
我正在编程一个按钮,以便在基于linux的板上启动软件。
基于Linux的嵌入式板上的按钮。GPIO不能与Linux内核一起工作,所以我使用了事件接口。按钮基本上是监听按钮按下以激活所有硬件,并在按下两次时停止硬件。我想知道是作为内核模块还是作为用户程序编写?或者作为执事?如果可以在用户空间(即守护进程)中执行,您应该在那里执行
在这种情况下,两者都可能是必需的。您需要以某种方式访问按钮,这取决于硬件的外观。然后,您需要响应一个事件,并在此基础上执行一个操作
遵循“策略不属于内核”的咒语,这意味
我刚刚尝试使用disasm反汇编一些外壳代码,在反汇编中发现了以下语句
00000005 0000添加[bx+si],al
由于该指令在这种情况下没有特别的意义,我尝试使用rasm如下:-
rasm-d“0000”的输出是add[eax],al。我很好奇为什么会发生这种情况。显然,rasm采用32位模式,而NDISSM不采用
echo -ne "\x00\x00" | ndisasm -b 32 -
应给出与rasm相同的结果
我正在编写一个shell脚本,其中我必须检查环境变量是否已设置,如果未设置,则必须设置它。是否有任何方法可以检入shell脚本,无论是否已经设置了环境变量
if [ -z "$VARIABLE" ]; then
VARIABLE=...
fi
这将检查$VARIABLE的长度是否为零
[ -z "$VARIABLE" ] && VARIABLE="abc"
if env | grep -q ^VARIABLE=
then
echo env variable is
标签: Linux
Gcc
environment-variablesenvironment
那么,从某个瞬间开始,新的控制台出现了一些问题,这会导致这个问题吗
这可能是我的Linux安装的问题吗
或者,更现实地说,问题是否取决于我的程序
谢谢大家!
环境:
-Linux OpenSuse 11.4
-gcc 4.5.1这里是另一个可以放入调试工具箱的工具
尝试“重置”命令——阅读手册页了解详细信息
简而言之,它将控制台重置为已知状态。它是。。。日志文件可能包含试图与tty交互的控制字符,从而导致难以跟踪的问题
您可能还需要查看命令“script”,它将所有控制台活动捕获到at et文件
我正在编写一个Linux内核补丁,它使用cmpxchg除了修复一些语义问题外,还可以加速一些情况,但是我注意到某些架构只支持xchg而不支持cmpxchg,如何在编译时确定编译内核的体系结构是否在硬件上支持cmpxchg?关于\ifdef\uuuuuuuuuu ARCH\uCMPXCHG?这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。@stealthyninja-hmm?据我看来,这正是答案。它以问号结尾是一个风格问题@曾经有一段时间,旗帜评论更具创造性。现在我所看到的
是否有可用的命令可以将传入流缓冲指定的字节计数或时间段?乙二醇
wget -O - http://video.com/myvid.mp4 | mybuffer -t 5s | myvidplayer
使用--buffer size选项,尝试执行pv或bar命令
我认为经典的dd命令也应该允许这样做。谢谢,使用iflag=fullblock bs=xxx的dd确实解决了我希望按字节计数进行缓冲的情况。是否有任何可用的缓冲时间?
我有一个csv格式(在linux上使用Bash)
我可以使用awk通过
eval MAC=($(awk -F "," '{print $1}' random.csv))
这是针对CSV中的每一列完成的,因此我可以分别调用DN[2],MAC[2]等,这是手动的,并分别对它们进行解析
但是如何按行解析csv?
例如:如果我调用的DN是123,则相应的MAC和分区也应返回。尝试一个循环:
while IFS=, read dn mac partition
do
echo "Do somethi
昨晚我工作到很晚,试图从源代码构建Linux的GLFW3包。这个过程花了我很长时间,总共大约3个小时,部分原因是我不熟悉CMake,部分原因是我不熟悉GLFW
我希望这篇文章能把你从我昨天遇到的困难中解救出来!我想我应该写一篇简短的评论,希望能帮你节省几个小时的时间
多亏了#glfw IRC频道上的“urraka”、“b6”和“niklas”,我才能够让glfw版本3.0.1正常工作
事实证明,这不是一个简单的过程(当然不是对我来说,我不是专家),因为网上没有太多关于glfw3的文档,特别是关于
我正在尝试创建一个动态变量,并为其赋值100
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
但是我这样做会出错,有什么帮助吗?我不知道这有什么好处,但是你可以通过bash的eval语句来实现这样的效果
下面的代码说明了这一点
#!/bin/bash
p_val="TEST"
active_id=$p_val
eval "flag_$active_id=100"
echo $flag_TEST
eval "echo \$
简短问题:页表驻留在哪里?它是在MMU(完全硬件实现)还是在RAM(涉及操作系统)中
我试图弄清楚在TLB未命中的情况下,RAM访问是否涉及将线性地址映射到物理地址。我猜答案是“不”,实现完全是硬件,但我不确定。我看到有人提到它可以像软件一样硬件,但我对英特尔处理器的常见情况感兴趣。英特尔体系结构中的TLB是在硬件中处理的。引用TLB实现
在IHS访问日志中,如果有401响应,我需要逐行获取信息
以下是格式,我需要逐行查看日志以获取用户属性前面的特定数字(在本例中为123或432),仅当在该行上找到401响应时
比如,如果第n行的第n个字是401,那么从第n列抓取数字并打印出来
myhost.com xxx.x.xxx.x aaa.aa.aa.aaa - - [14/Aug/2013:10:44:55 +1000] "GET /http/user=123 HTTP/1.1" 401 55 "-" "Apache-HttpClie
在使用git时,为了授权开发人员,我们要求他们提供公共ssh密钥,然后将其标记为已授权
使用gitlab,开发人员可以通过帐户接口保存ssh公钥。授权部分是如何处理的
请尽早回复。通过进行管理,该管理取代自
从~/.ssh/authorized_key调用脚本
它附带一组命令,包括用于ssh密钥管理的命令:
钥匙:
添加键
删除密钥
从授权密钥文件中删除所有密钥
嗨,沃克!您提到“bin/install脚本是从~/.ssh/authorized_keys调用的。bin/gitlab shell中
我想动态查看每个核心的CPU使用情况,包括消费用户模式和内核,我应该如何做?您可以使用top命令动态查看每个核心的CPU使用情况(不确定消费用户模式和内核是什么意思)
在终端中键入top
然后键入1您可以使用dstat,它为网络寻呼和系统提供一些更有用的信息。这些信息可以捕获到文件(csv等)中以供将来使用
例如,假设您的机器有4个内核。你可以做以下事情
dstat -C 0,1,2,3,total
如果您只想查看Core 2和Core 3的统计信息,可以执行以下操作:
dstat -C 2,
标签: Linux
schedulingtasklet
linux具有调度的微线程队列。当cpu从中断或系统调用返回时,它会检查并执行调度的微线程。如果要处理的Tasklet太多怎么办?Tejas
这是一个非常好的问题
tl;dl对这个问题的回答是:
first-come-first-serve within the softirq-tasklet thread.
(这是预期的,因为微线程构建在SoftIRQ之上,但具有更简单的界面和宽松的锁定规则。)
这篇文章,,“讨论了你不应该在中断处理程序中做太多的工作,以免丢失新的中断和其他设备缺乏继续工作
我们正在运行一个基于Java的交易应用程序,在某些特定的时间段内,我们希望尽可能多地优先处理传出的网络流量,持续约10毫秒。是否有一种方法可以在短时间内临时缓冲所有传入的网络流量,无论是在网卡上还是通过Redhat Linux机箱上的进程或缓冲区
这背后的基本原理是,传入的网络流量在同一时间段内出现峰值,而处理此流量的应用程序正在从我们试图确定优先级的进程中窃取CPU周期。我们对处理传入网络流量的应用程序没有细粒度的控制
我们使用的是1 Gbps连接,因此大约1 MB的缓冲区应该足够了。我们不希
有一个命令列表,这些命令只有在以sudo开头时才会成功
还有另一个命令列表,只有当用户在没有sudo的情况下运行它们时,这些命令才会成功
我想从同一个脚本执行所有这些命令。
我想避免做以下事情:
#!/usr/bin/env bash
sudo sudo_command_one;
sudo sudo_command_two;
sudo sudo_command_three;
non_sudo_command;
sudo sudo_command_four;
原因是sudo有一个超时,这些命令可
当对两个目录dir和dir.orig执行“diff-bBupwr”以捕获差异时,util不包括仅存在于dir中的文件,它只报告例如dir/app.c仅存在于dir/中,但我希望将其添加到生成的diff文件中,以便将其作为补丁应用
我查了“man diff”,但没有发现任何线索。我很感激你给我的建议。谢谢。使用选项-N。手册页上说:
-N, --new-file
treat absent files as empty
我已经安装了带有apache的linux服务器(Red Hat Enterprise linux server 5.3版(Tikanga))。它已经用于浏览某些文档。现在我想添加一个新目录(带有html页面),这样每当浏览目录时,它都可以显示html页面
但是我不确定在哪里编辑httpd.conf文件
现有httpd.conf:
当我点击url“”时,它显示文件夹列表
现在,我想向这个现有网站添加一个网站,因此当用户点击url“”时,它应该在浏览器中显示一个html页面。我已经在/var/ww
标签: Linux
forkipcwaitexit
status的值未从子进程正确返回到父进程
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<string.h>
#define BUF_SIZE 200
int main(void){
pid_t pid;
int status=6;
char buf[BUF
不公开文件系统级别的sync调用,只公开和fsyncdir。这是否意味着当调用sync时(或在FUSE挂载点内调用syncfs),内核会对所有FUSE挂载文件系统上所有打开的文件调用fsync?或者有不同的语义吗?查看内核源代码,似乎在sync和syncfs上执行了任何挂起的写回,但是没有调用fsync(反正不是AFAICS),因此实际上没有任何方法知道调用了sync或syncfs
相关代码在中,例如
如图所示,这将调用FileSystem超级块上的fsync\u fs操作,但fuse未定义任何
我需要测试一个创建临时文件的程序。运行完成后,将删除该文件。如何检查文件是否已创建和删除
我正在考虑向进程发送一些信号(如Ctrl-Z)以暂停它并进行检查,但应该是更简单的方法
我在Linux中使用bash。由于您无法访问程序代码,因此可以使用strace工具拦截进程发出的所有系统调用。然后使用简单的greps,您可以查找文件创建、删除和所有相关操作。如果您可以确定地知道创建文件的时间,您可以使用“-f”选项来挂起文件,那么您可能必须使用“-f”选项来确保记录所有内容,包括任何进程的子进程执行的
标签: Linux
dynamic-linking
所以我编辑了我的/etc/ld.So.conf文件,现在它看起来像这样:
include /opt/intel/mkl/lib/intel64_lin
include /etc/ld.so.conf.d/*.conf
include /usr/local/lib
我已经尝试运行了sudoldconfig-v,但在输出中,它似乎甚至没有尝试加载MKL库目录。当我尝试使用MKL运行程序时,它失败了。但是,如果我在/usr/local/lib中添加一个符号链接到从/etc/ld.so.conf.d/
调整虚拟机大小后,我无法通过SSH连接到我的Linux Azure虚拟机(Ubuntu 14.10)
我已经试过了-
Resizing the VM
Resetting the password using new azure portal
Basically all the steps that are mentioned here :
我仍然收到“ssh:connect to host bookmarks.cloudapp.net port 22:Connection timed o
我试图通过管道将一些输入(如标准输入,而不是命令行参数)从文件传输到linux机器上的挂起进程,例如
cat file > fg
然而,我似乎找不到正确的命令。到目前为止我已经试过了
file > fg
file | fg
file - | fg
fg < file
fg < cat file
file>fg
文件| fg
文件-| fg
fg
我正在对docker和容器进行一些测试,我想知道:
是否有一种方法可以用于从主机的角度按名称或ID查找与docker容器关联的所有进程
毕竟,容器归根结底是一组虚拟化进程 docker ps将列出正在运行的docker容器
docker exec ps将告诉您它正在运行的进程 在docker容器中运行的进程是名为containerd shim的进程的子进程(在docker v18.09.4中)
首先找出容器垫片进程的进程ID
对于它们中的每一个,找到它们的子进程
pgrep容器垫片
要查
各位下午好,
我已经创建了一个工作相当好的资源监控工具
提高CPU平均使用率
平均内存使用率
甚至计算NIC吞吐量的百分比(如果您有1Gb NIC,它将显示一次正在处理的百分比)。。。是的,我知道这更像是对NIC的粗略估计/理论最大限制
不过,我的脚本有一个问题。下面是我遇到问题的部分代码(为了简单起见,我将一些代码转换为伪代码)
基本上,您可以按任意键启动程序,程序启动后(在循环时)只要按键盘上的任意键,程序就会停止录制信息并继续运行
现在这个脚本工作了,并且完成了我需要它做的一切。我遇到
如何在AWK中将unix时间戳转换为hh:mm:ss:SSS(其中SSS是毫秒)
例如:
echo 1456478048306 > time
cat time | awk ....... > readable_time_format
您可以使用bash实现这一点:
#!/bin/bash
ts="1456478048306"
unix_epoch=${ts:0:-3}
ms=${ts:((-3)):3}
echo "$(date -d@"${unix_epoch}" +%H:%M
当我在OS X上克隆Linux源代码时,它们会立即被更改,git reset--hard不会返回内容。以下是完整的课程:
$ git clone git://github.com/torvalds/linux.git
$ cd linux
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <f
标签: Linux
cpuhardwareamd-processorpower-saving
我正在尝试检测cpu的当前p状态。我注意到,在我的ryzen 1700x系统上,p状态MSR(C001_0063)总是返回2,即使内核显然不处于该状态。我想它曾经与我的主板附带的初始bios(v0403)一起工作,但现在已经无法下载了1
我的cpu超频了2到3.8GHz。我使用cpufreq set来固定速度,并使用cpufreq info来验证:
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardw
我的Docker映像(CentOS 7)运行一个bash脚本,该脚本需要一些环境变量。bash脚本通过ENTRYPOINT指令启动
# Inside the Dockerfile
ADD run.sh .
RUN chmod 777 run.sh
ENTRYPOINT ["/bin/bash", "-c", "./run.sh"]
# Inside run.sh
echo MakeDir: $MakeDir
要启动此容器,我运行以下命令:
docker run -t myimage -e M
有一些方法可以在bash命令中自动回答-y,例如
RUN apt-get install -y nodejs
RUN apt-get update && apt-get install sudo && "the above command along with their answers" && "some other command"
但我有个案子我想办
dpkg --install someDebi
我有一个关于_dl_debug_state函数的问题。这个函数是在内核进程空间还是用户空间中执行的
我还有同样的问题sys\u open..一旦sys\u open开始执行,内核将处于内核模式还是用户模式
我试图通过NFS将一个根文件系统从运行Windows Subsystem for Linux(Ubuntu 20.04.1 LTS)的Windows 10系统加载到运行Angstrom Linux(v2017.06)的嵌入式项目中。我已将Windows中的一个驱动器(R:)映射到WSL Linux路径(\WSL$\Ubuntu)。然后,我让一个NFS服务器在Windows中运行,指向路径(R:\home\NFS\rootfs\rootfs)。在嵌入式项目(Angstrom)中,我使用以下命令装载
我正试图为bashshell编写一个scirpt。我得到了4个参数:
目录路径
文件扩展名
一句话
数
我必须查找路径的所有文件和子目录的文件,以及具有给定扩展名的文件。然后,在文件中查找与给定单词匹配的行,但前提是行中的单词数大于或等于提供的数字。
例如:
如果localDirectory具有:image.png script.sh text.txt
并且text.txt具有:
This is a text file
It contains many words
This is an exam
我想在我的ubuntu上安装一些我正在使用的应用程序的更新,但是没有,我试着运行sudo apt get update,这就是我得到的
sudo apt-get update
Hit:1 http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu bionic InRelease
Hit:2 http://repository.spotify.com stable InRelease
Hit
我正在尝试创建一个cronjob,它将删除模式为*.jar的所有内容,除了master.jar和目录模式*/jarkeeper/*/staging中的任何内容/*
我差一点就找到了正确的命令,但运气不好。以下是我目前掌握的情况:
find /var/lib/jenkins/workspace/ ! -path "*/jarkeeper/*/staging/*" -or -type f ! -name master.jar -name \*.jar
及
正确的格式应该是什么?