小编Hi-*_*gel的帖子

如何查找正在使用的串行端口?

问题:

我通过串行端口(又名 RS-232)插入设备(即 GSM 调制解调器),我需要查看/dev/该设备与文件系统中的哪个文件绑定,以便能够与其进行通信。不幸的是/dev/dmesg输出中没有新创建的文件,也看不到任何内容。所以这似乎是一个很难回答的问题。

背景:

我从来没有使用过串口设备,所以昨天,当出现需要时,我尝试谷歌它但找不到任何有用的东西。我花了几个小时寻找,我想分享一个找到的答案,因为它可能对某人有所帮助。

tty devices serial-port

42
推荐指数
1
解决办法
16万
查看次数

运行 sh 脚本:尽管具有可执行位和 root 权限,但“权限被拒绝”

我在VirtualBox 中安装了 Debian (用于通常破坏我系统的各种实验)并尝试启动 VirtualBox 来宾插件脚本。我以 root 身份登录并尝试启动autorun.sh,但我得到“权限被拒绝”。ls -l表明该脚本具有可执行权限。

抱歉,我无法复制输出——VirtualBox 没有插件绝对没有用,因为共享目录和共享剪贴板都不起作用。但为了让你确定,我手工复制了权利:

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
Run Code Online (Sandbox Code Playgroud)

起初我认为可能是脚本执行了一些导致错误的事情。我试图/bin/sh用类似的东西替换#/pathtorealsh/sh -xv,但我没有输出——似乎脚本甚至无法执行。

我什至不知道是什么导致了它。

shell bash executable virtualbox

26
推荐指数
1
解决办法
6万
查看次数

某些应用程序不接受来自 «Compose» 键的某些字符

问题是撰写键工作正常,但某些应用程序不接受其中的某些字符。例如,我可以?在 Emacs ( Compose+ 8+ 8) 中输入字符,但这在 FireFox、Konsole 和 Kate 中不起作用。但是许多其他字符,例如那里输入(在 FireFox、Konsole 和 Kate 中)使用Compose工作得很好。此外,我可以通过简单的复制粘贴(从两个剪贴板中的任何一个)插入问题符号

那么,是什么原因造成的,如何解决呢?

抱歉,我不知道如何研究这个问题。我发现有些人的 Compose 键在某些应用程序中根本不起作用,但在我的情况下它是有效的,尽管部分原因。

设置:/etc/default/keyboardKDE 和 KDE 键盘设置中,组合键都绑定到右侧的 Super 键。

kde character-encoding x11 compose-key

12
推荐指数
1
解决办法
1194
查看次数

从 ubuntu 14.04 升级到 16.04 后没有 DNS 解析

我将 ubuntu 14.04 升级到 ubuntu 16.04,但互联网连接出现问题。具体来说,更新后的 DNS 停止工作。出于调试目的,我设置了唯一的 DNS 8.8.8.8,但名称解析仍然不起作用。的输出nmcli device show wlan1 | grep IP4是:

pc@pc:~$ nmcli device show wlan1 | grep IP4
IP4.ADDRESS[1]: 192.168.1.3/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]: 8.8.8.8
The output from dig @8.8.8.8 google.com and dig google.com:

dig @8.8.8.8 google.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: …
Run Code Online (Sandbox Code Playgroud)

ubuntu dns internet upgrade

12
推荐指数
2
解决办法
4万
查看次数

查找命令:-or 选项不起作用

我想为匹配模式的每个文件执行一个命令。但是似乎正确的命令对我不起作用,我不知道为什么。

$ find . -type f -name '*.c' -or -name '*.h' -or -name '*.cpp' -exec ls {} \;
$ ls
script.sh  test.c  test.h
Run Code Online (Sandbox Code Playgroud)

find wildcards patterns

5
推荐指数
1
解决办法
6343
查看次数

tcpdump 似乎没有捕获任何数据,为什么?

我正在尝试像这样捕获数据tcpdump

$ sudo tcpdump -Xi eth0
Run Code Online (Sandbox Code Playgroud)

我已将设备和 PC 相互连接。在双方上,我启动一个简单的测试应用程序,向对方发送消息。

问题是,虽然双方都收到了消息,但tcpdump没有打印任何内容。有时只能看到 ARP 请求(ARP 请求当前未连接到 LAN 的另一台 PC)

$  ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0f:ea:62:ce:d6  
          inet addr:10.5.57.197  Bcast:10.5.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20f:eaff:fe62:ced6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:66497 errors:0 dropped:4334 overruns:0 frame:0
          TX packets:3785 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6539170 (6.5 MB)  TX bytes:553828 (553.8 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING …
Run Code Online (Sandbox Code Playgroud)

networking tcpdump

5
推荐指数
1
解决办法
5万
查看次数

用 execl() 启动的 «sh» 变成了僵尸

折腾了半天,还是想不通,为什么用execlcall启动的dash就变成僵尸了。

下面是一个最小的测试用例——我只是 fork 一个孩子,复制 std [in,out,err]描述符,然后启动sh

#include <cstdio>
#include <fcntl.h>
#include <cstring>
#include <stdlib.h>
#include <cerrno>
#include <unistd.h>

int main() {
    int pipefd[2];
    enum {
        STDOUT_TERM = 0,
        STDIN_TERM  = 1
    };
    if (pipe(pipefd) == -1) { //make a pipe
        perror("pipe");
        return 0;
    }
    pid_t pid = fork();
    if (pid == 0)
    {// Child
        dup2(pipefd[STDIN_TERM], STDIN_FILENO);
        dup2(pipefd[STDOUT_TERM], STDOUT_FILENO);
        dup2(pipefd[STDOUT_TERM], STDERR_FILENO);
        execl("/bin/sh","sh", (char*)NULL);
        // Nothing below this line should be executed by child process. If so, …
Run Code Online (Sandbox Code Playgroud)

shell c c++ api exec

3
推荐指数
1
解决办法
1263
查看次数

如何在后台启动“gdbserver”?

当我在设备(如gdbserver :2345 myapp上运行 gdbserver 时,gdbserver 完全阻止终端。添加 & 符号&或按下都不会^z使其在后台运行。我还检查过:它在 Kubuntu 上也可以重现。

我确实需要使用 shell 命令,而且由于我不知道如何通过 gdbserver 执行这些命令,所以在它运行后我感觉自己瘫痪了。

shell debugging terminal background-process

2
推荐指数
1
解决办法
3178
查看次数