Articles of Linux操作系统

代码如何存储在可执行文件中?

我读过一个可执行文件将代码存储在不同的部分。 例如,数据的一个单独的部分等。这是通用的不同平台,如Win或MacOs或Linux? 一些洞察这将是非常有帮助的。

UNIX shell脚本,用于从文件运行grep命令列表并获取单个分隔文件的结果

我是unix编程的初学者,也是自动化工作的一种方式 我想运行一个grep命令列表,并在单个分隔文件中获取所有grep命令的输出。 我正在使用下面的bash脚本。 但它不工作。 样机sh文件: !/bin/sh grep -l abcd123 grep -l abcd124 grep -l abcd125 并在运行时使用下面的命令 $ ./Mockup.sh > output.txt 这是正确的命令吗? 如何在输出文件中同时获得grep命令和输出? 如何在每个命令和结果后分隔输出?

使用Opencv直接从networking摄像头获取灰度图像

由于在我的embedded式应用程序中,我需要灰度图像,为了节省时间,我试图直接从networking摄像头获取帧,而不需要从RGB格式转换中获取帧。 我find的例子获取RGB中的帧,然后将其转换 cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY) 谢谢。

将别名<cmd>透明地改为“do X then <cmd>”

标题很糟糕,但我不确定我想要做什么的正确术语,如果我知道我现在可能已经find了答案! 问题: 由于每当端口23被扫描,一个过分热心的端口扫描器(客户的networking监视器)和一个过于简单化的telnet守护进程(busybox linux),telnetd启动另一个 /bin/login实例,等待用户通过telnetinput。 由于端口扫描器并没有真正尝试login,所以没有会话,所以不会有会话超时,所以我们很快就会运行一个百万个僵尸拷贝/bin/login 。 我想要做的是: telnetd给了我们启动一些其他东西 ( -l )而不是/bin/login所以我想我们可以用一个bash脚本来replace/bin/login ,这个脚本会杀死旧的login进程,然后正常运行/bin/login : #!/bin/sh # First kill off any existing dangling logins # /bin/login disappears on successful login so # there should only ever be one killall -q login # now run login /bin/login 但是这似乎立即返回(没有错误,但没有login提示)。 我也尝试在telnetd的参数中链接命令: telnetd — -l "killall -q login;/bin/login" 但是,这似乎并没有工作(再次 – […]

杀死和睡眠命令在bash脚本中不能正常工作

我有一个bash脚本: #!/bin/sh for ((i=0; i<=10; i++)); do ssh "w$i" 'uptime;ps -elf|grep httpd|wc -l;free -m;mpstat' done & pid=$! sleep 3 kill -9 $pid 如果在3秒内没有完成,我想在for loop杀死ssh 。 但是我的观察是,这个过程没有被杀死,而且这个循环需要3秒钟以上的时间来杀死。 你能帮我纠正我的脚本,所以我的脚本可以杀死3秒后for loop过程?

猫通过一个SSH连接多个文件,并获得每个返回值

正如在标题中所说,我试图通过一个SSH连接猫多个文件(内容需要附加到主机上的现有文件),并获得每个返回值,即如果该特定文件的猫是成功的。 到目前为止,我对每个文件单独做了这个,只需重复下面的命令,并检查返回值。 cat specific_file | ssh user@host -i /root/.ssh/id_rsa "cat >> result/specific_file" 然后我只是检查每次传输的返回值(自动),从而可以确定每个文件的状态。 我的问题是:是否有可能通过一个单一的SSH连接,但获得每个单一文件的返回值? 提前致谢 ! 编辑: (b)正如你在下面看到的,我为一个特定的文件生成一个命令,然后检查返回码。 包含程序的这部分的方法然后被调用为不同的typeso 如果文件已成功logging,则可以从客户端删除该文件,并且还允许进一步logging到该文件的types。 如果文件超出限制,则该位在程序的另一部分未被设置。 sprintf(command,"/bin/cat /root/%s%s | /usr/bin/ssh log-bot@192.168.5.1 -i" " /root/.ssh/id_rsa \"/bin/cat >> result/%s%s\"", apmac, ending_str[source], apmac, ending_str[dest]); rc = system(command); if(rc != 0) { sprintf(buffer, "[%i] – LOG ERROR from %s to %s CODE %i ", […]

运行g ++链接到特殊的库

这些想法可能看起来很奇怪 我在Gnu / Linux系统上创build了其他的环境,通过创build目录并将必要的文件复制到bin,lib,usr等等。 然后我做“chroot”,然后在里面做一些操作。 问题是环境中的所有文件都是从较旧的操作系统(2.4内核版本)中获取的。 但编译器必须采取现代(在现代语言标准的支持下)。 当我试图在环境中运行编译器时,出现错误: g++: /lib/libc.so.6: version `GLIBC_2.11' not found (required by g++) g++: /lib/libc.so.6: version `GLIBC_2.4' not found (required by g++) 然后,我将实际的libc.so.6复制到/ home / mylibs(内部环境)。 导出LD_LIBRARY_PATH: bash-3.00# export LD_LIBRARY_PATH="/home/mylibs/" 但似乎没有任何改变。 同样的错误依然存在。 下一个尝试是build立静态链接的gcc编译器。 不幸的是发生了一些问题( 静态链接的gcc )。 也许我从根本上是错误的…但是,我有没有其他的方式来build立可执行文件链接到旧的库,使用现代编译器? PS我的操作系统是ArchLinux。 'uname -r'显示'4.8.12-3-ARCH'。 最老的环境是由MCBC 3.0(俄文字母,不知道如何正确解密,也许武装部队的移动系统)与2.4内核版本。

如何指定在Linux中使用哪个接口

是否有可能绑定一个udp套接字到一个特定的接口,所以它通过该接口发送数据? 我有一个应用程序使用多个Udp套接字来发送数据,它运行在具有多个接口的机器上。 我知道可以通过使用下面的代码来指定接口名称: int UdpSocket::open(const char *interface) { send_fd_ = ::socket(AF_INET, SOCK_DGRAM, 0); if (send_fd_ < 0) { perror("socket"); return -1; } int val = 1; int rc = ::setsockopt(send_fd_, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); if (rc < 0) { perror("sesockopt"); close(); return -1; } unsigned char ttl = 16; rc = ::setsockopt(send_fd_, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, […]

为MPC6050编写驱动程序i2c

我是C新手,我尝试写一个MPC6050加速计的驱动程序。 (Android 4.2.2的内核3.4)。 这是这个问题的下列。 这个页面和这个帮助我,但我不能使用驱动程序呢: arch/arm/mach-sun7i/core.c:77:44: warning: 'sun7i_i2c_platform_data' defined but not used [-Wunused-variable] arch/arm/mach-sun7i/core.c:136:41: warning: 'sun7i_i2c_platform_device' defined but not used [-Wunused-variable] 我正在处理/ANDROID/lichee/linux-3.4/arch/arm/mach-sun7i/core.c文件。 (相当于board-machine.c) 我粘贴了每个结构基础的结构。 初始化函数是,我希望确定,像这样: /* ACCELEROMETER*/ #include <linux/i2c-gpio.h> #include <linux/mpu.h> #include <linux/i2c.h> #include <mach/i2c.h> #include <mach/gpio.h> #define I2C_SDA TWI_LCR_SDA_EN #define I2C_SCL TWI_LCR_SCL_EN /* * /////////// from linux/i2c-gpio.h ////////// * struct i2c_gpio_platform_data { unsigned int […]

根据需要装载/卸载ELF部分?

对于一个比较模糊的用例,我希望有一个(大的)静态链接的Linux可执行文件,由一小块控制代码和大量的静态(只读)数据组成。 有没有可能为了节省内存,让加载程序只加载控制代码的部分,然后手动加载需要的RO数据部分,并在处理完成后再次卸载它们? 这可能吗? (我认为数据stream(在文件系统级别)可以用来解决这个问题,但是它们对我来说是不可用的(EXT3),因为数据stream很容易丢失,所以分发会很棘手。