Articles of Linux操作系统

暂时禁用mysql远程访问

我需要在Linux服务器上进行夜间mysql维护时使远程访问变得无效,以便在这段时间内没有人能够查询数据库。 我不能做SERVICE MYSQL STOP,因为那时我无法做我需要做的事情(截断和重build一对表)。 有没有办法短时间closures外部访问? 提前致谢。

虽然没有任何投入,为什么投票仍在返回?

我写了一个小testing程序来弄清楚如何与poll进行交谈。 我创build了三个文件testa , testb , testc ,并将stringhello\n写入第一个。 所以,这里是我的poll : poll(polls.data(),polls.size(),-1) 根据手册页,超时-1应表明系统调用永远不会超时。 然而,它没有任何东西可以读。 我总是消耗一个字节的input,可以看到你打印的hello\n ,但民意调查并没有停止在那里。 它只是假装在那里有东西要读。 #include <sys/types.h> #include <sys/stat.h> #include <sys/fcntl.h> #include <sys/poll.h> #include <unistd.h> #include <errno.h> #include <vector> #include <map> #include <string> #include <iostream> typedef int fd_t; int main() { fd_t const a = open("testa",O_RDONLY); fd_t const b = open("testb",O_WRONLY); fd_t const c = […]

字符设备捕获多个(int)ioctl参数

我必须编写一个linux char设备,它可以为每个unlock_ioctl处理ioctl(无BKL)函数。 目前,我可以从用户空间ioctl命令收到一个参数 __get_user(myint, (int __user *) arg); 我怎样才能接收多个int参数(例如这个调用)? ioctl(fp, SZ_NEW_DEV_FORMAT, 0, 1, 30);

无法理解Linux内核模块中read_proc的工作

我正在阅读此页面上的内核模块示例 程序中使用的read_proc如下所示: int fortune_read( char *page, char **start, off_t off, int count, int *eof, void *data ) { int len; if (off > 0) { *eof = 1; return 0; } /* Wrap-around */ if (next_fortune >= cookie_index) next_fortune = 0; len = sprintf(page, "%s\n", &cookie_pot[next_fortune]); next_fortune += len; return len; } 有人可以解释为什么off被检查为大于0.此外,有人可以解释什么是closures和计数论证的重要性。 到目前为止,我的理解是,我们必须在页面上写入数据,并且在数据结束时必须设置eof。 谢谢。

如何closureswrite()系统调用的缓冲?

我曾经认为write()系统调用是无缓冲的, fwrite和fread用于缓冲IO。 不过,我写了一些简单的程序来确定在使用write()时仍然有一些缓冲。 我在套接字上使用write()和read() 。 由于缓冲,服务器不停地发送数据包时,客户端可能会滞后。 我不要那个。 我希望客户端必须在服务器发送更多logging之前消耗logging。 我怎样才能做到这一点,而不增加确认等networking负载! 我在linux上使用gcc server.c: #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <netinet/in.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <netinet/tcp.h> int remote_rr_port=2000; // Server will send RR logs using connection on this port. char const *remote_server_ip="127.0.0.1"; int connFD_rr; static void startTcpServer(int *sd, […]

获取组合键

如何获得键盘上的按键组合( Ctrl + somekey , Alt + somekey )与Java? 我使用KeyEvent监听器, MouseEvent监听MouseEvent监听键盘上的所有按键。 我可以通过使用该侦听器捕获键盘上的所有关键事件。 但是,我不能抓住( Ctrl + Alt + Del )等键组合。

Raspbian上的蓝牙LE

我使用以下configuration从源代码安装了bluez-5.15: $ ./configure –prefix=/usr –mandir=/usr/share/man –sysconfdir=/etc \ –localstatedir=/var –libexecdir=/lib –disable-systemd 然后,我必须手动将gatttool复制到/ usr / local / bin目录中 $ sudo cp attrib/gatttool /usr/local/bin/ 我重新启动了树莓派,并尝试以下连接到我的BLE设备: $ sudo hciconfig hci0 up $ sudo hcitool lescan LE Scan … EA:FB:B5:CE:B0:13 DfuTarg $ sudo hcitool lewladd EA:FB:B5:CE:B0:13 $ sudo hcitool lecc EA:FB:B5:CE:B0:13 Could not create connection: Input/output error 那么我试着用gattool连接: $ gatttool […]

UDP数据包由linux内核丢弃

我有一个服务器,通过多播发送UDP数据包和一些列表到这些多播数据包的客户端。 每个数据包的固定大小为1040字节,服务器发送的全部数据量为3GB。 我的环境如下: 1千兆比特以太网 40个节点,1个发送者节点和39个接收器节点。 所有节点具有相同的硬件configuration:2个AMD CPU,每个CPU有2个2.6GHz的内核 在客户端,一个线程读取套接字并将数据放入队列中。 一个额外的线程从队列中popup数据并执行一些轻量级处理。 在组播传输期间,我认识到节点端的丢包率为30%。 通过观察netstat -su统计信息,我可以说,客户端应用程序丢失的数据包等于netstat输出中的RcvbufErrors值。 这意味着所有丢失的数据包都被操作系统丢弃,因为套接字缓冲区已满,但我不明白为什么捕获线程无法及时读取缓冲区。 在传输过程中,4个核心中的2个被利用了75%,其余的正在睡觉。 我是唯一一个正在使用这些节点的人,而且我认为这种机器在处理1Gbit带宽方面没有问题。 我已经做了一些优化,通过为amd cpus添加g ++编译器标志,这将数据包丢失率降低到10%,但是在我看来,它仍然太高。 当然我知道UDP是不可靠的,我有自己的修正协议。 我没有任何pipe理权限,因此我无法更改系统参数。 任何提示如何提高性能? 编辑:我解决了这个问题,使用2线程正在读取套接字。 有时recv套接字缓冲区仍然变满。 但平均下降不到1%,所以处理它不是问题。

如何使用大括号扩展的variables

我有四个文件: 1.txt 2.txt 3.txt 4.txt 在linux shell中,我可以使用: ls {1..4}.txt来列出所有的四个文件,但是如果我设置两个variables:var1 = 1和var2 = 4,如何列出这四个文件? 那是: var1=1 var2=4 ls {$var1..$var2}.txt # error 什么是正确的代码?

CUDA和固定(页面locking)内存不是页面locking?

我试图弄清楚CUDA(或OpenCL实现)是否在需要固定(页面locking)的内存时说实话。 我试着cudaMallocHost并看着/proc/meminfo值Mlocked和Unevictable ,都停留在0,永远不会( /proc/<pid>/status报告VmLck也为0)。 我用mlock来locking页面内存,并按照预期值上升。 所以这种行为的两个可能的原因可能是: 我没有从CUDA API获取页面locking内存,并且cudaSuccess是假的 CUDA绕过了页面locking内存的操作系统计数器,因为CUDA在Linux内核方面有一些神奇的function 所以实际的问题是:当我使用CUDA分配页面locking内存时,为什么我无法从操作系统获取页面locking内存的值? 另外:如果不是从/proc/meminfo或/proc/<pid>/status我可以在哪里得到正确的值? 谢谢! 系统:Ubuntu 14.04.01 LTS; CUDA 6.5; Nvidida Driver 340.29; Nvidia Tesla K20c