我有一个 systemd 服务,需要在 中创建一个目录/run,否则以非 root 用户身份运行。从博客示例中,我得出了以下解决方案:
[Unit]
Description=Startup Thing
[Service]
Type=oneshot
ExecStart=/usr/bin/python3 -u /opt/thing/doStartup
WorkingDirectory=/opt/thing
StandardOutput=journal
User=thingUser
# Make sure the /run/thing directory exists
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /run/thing
ExecStartPre=/bin/chmod -R 777 /run/thing
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
神奇之处在于评论后面的 3 行。显然ExecStartPre's 将以这种方式以 root 身份运行,但ExecStart将以指定用户身份运行。
这导致了 3 个问题:
-在前面做什么/bin/mkdir?我不知道它为什么在那里或它做什么。ExecStartPre一个单元文件中有多个's 时,它们是否只是按照在单元文件中找到的顺序连续运行?或者其他什么方法?我正在运行 Debian 不稳定systemd,在启动时我有一些服务被标记为FAILED(而不是OK),但是日志太快了,我无法获取失败服务的名称。
我不知道是否有一种方式来获得这个启动日志一旦系统启动并运行(我不是在谈论内核日志这是与可达dmesg但services)。而且,这service --status-all并没有真正的帮助,因为它只列出了打开/关闭的服务,而不是在启动时失败的服务。
所以,欢迎任何提示!
我想获得从$pid. 这是我想出的最简单的方法:
pstree -p $pid | tr "\n" " " |sed "s/[^0-9]/ /g" |sed "s/\s\s*/ /g"
Run Code Online (Sandbox Code Playgroud)
是否有任何命令或任何更简单的方法来获取所有后代进程的完整列表?
当我编译自己的内核时,基本上我所做的如下:
我从 www.kernel.org 下载源代码并解压。
我将之前的内容复制.config到源代码中,并make menuconfig根据内核的新策略查看新选项并修改配置。
然后,我编译它: make -j 4
最后,我安装它:su -c 'make modules_install && make install'.
经过几次测试,我删除了旧内核(从/boot和/lib/modules)并使用新内核完全运行(这最后一步救了我好几次!这是一个专业提示!)。
问题是,/boot/initrd.img-4.x.x与我的发行版中的那些相比,我总是得到一个巨大的。这里以我当前/boot/目录的内容为例:
# ls -alFh
total 243M
drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./
drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../
-rw-r--r-- 1 root root 2.9M Mar 9 07:39 System.map-4.4.0-1-amd64
-rw-r--r-- 1 root root 3.1M Mar 11 22:30 System.map-4.4.5
-rw-r--r-- 1 root root …Run Code Online (Sandbox Code Playgroud) 我在笔记本电脑上使用“纯”Debian 9 和 DWM(无桌面环境)。安装后,我必须安装pulseaudio包才能使声音正常工作。它运行良好,但突然声音不再播放。我不确定是什么操作导致了这种情况(无论是升级某个软件包还是其他什么)。
我在任何地方都看不到任何错误;它只是不玩。我已经在 Windows 上检查过扬声器是否正常工作,所以这不是硬件问题。
当我发出pulseaudio --start --log-target=syslog并查看系统日志时,那里没有错误。
谁能帮我解决这个问题?在评论中写下我应该粘贴哪些日志或配置。
我试图建立一个完整的系统映像的ARM( armhf,armel甚至aarch64基于可以用QEMU运行Debian的)。不幸的是,我在网上找到的所有示例都是通过传递内核(initrd如果它需要一些模块的话)来启动映像的。
但是,我真的很qemu-system-amd64想像使用 一样启动系统,只需提供磁盘映像和 CD-ROM 映像(以开始安装)。
我可以理解-machineand没有默认值-cpu,但是我在网上找不到任何关于如何执行以下操作的线索:
#> wget \
http://cdimage.debian.org/.../armhf/iso-cd/debian-testing-armhf-netinst.iso
...
#> qemu-img create -f qcow2 debian-armhf.qcow 20G
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9 \
-hda debian-armhf.qcow \
-cdrom debian-testing-amd64-netinst.iso \
-boot d
...
#> qemu-system-arm -machine vexpress-a9 -cpu cortex-a9 \
-hda debian-armhf.qcow \
-net nic -net user,hostfwd=tcp::2222-:22
...
Run Code Online (Sandbox Code Playgroud)
所以,我真的想知道这样的事情是否可能......如果是的话,如何?如果没有,为什么?
对于我的i3 窗口管理器设置,我正在寻找类似于 的命令行工具xbacklight,但用于控制键盘中 LED 的亮度。
基本上,我可以通过命令行设置 LED,但它需要是 root:
# Light off the leds
echo 0 > /sys/class/leds/smc::kbd_backlight/brightness
# Light on the leds (full power)
echo 100 > /sys/class/leds/smc::kbd_backlight/brightness
Run Code Online (Sandbox Code Playgroud)
我知道这是可能的,因为 Gnome3 对此提供支持,但我不知道他们究竟是如何进行的......
现在,我的~/.config/i3/config样子是这样的:
# screen brightness controls
bindsym XF86MonBrightnessUp exec xbacklight -inc 10
bindsym XF86MonBrightnessDown exec xbacklight -dec 10
# keyboard backlight controls
#TODO
# XF86KbdBrightnessUp
# XF86KbdBrightnessDown
Run Code Online (Sandbox Code Playgroud)
那么,有没有一种工具,类似于xbacklight用键盘背光来做屏幕亮度一样的事情?如果这个工具可以同时控制(屏幕和键盘),那就更好了。
如何在 Bash 脚本中检查没有提供命令行参数或 STDIN?
我的意思是如果我跑:
#> ./myscript.sh
... Show message "No data provided..." and exit
Run Code Online (Sandbox Code Playgroud)
或者:
#> ./myscript.sh filename.txt
... Read from filename.txt
Run Code Online (Sandbox Code Playgroud)
或者:
#> ./myscript.sh < filename.txt**
... Read from STDIN
Run Code Online (Sandbox Code Playgroud) 我有一台带有用于蜂窝通信的内部 3G PCIe 卡的车载计算机,但我不知道必须使用哪个串行端口才能发送 AT 命令。
这台电脑也有板载GPS /dev/ttyS5,9600的速度可以很好的上网。我看了一些资料,看到3G卡的速度应该是115200。这个3G PCI卡是“Telit HE910 Mini PCIe”数据卡”,我在Ubuntu 14.04上运行。
另外,我一直在尝试打开一个带有n (0...5) 个端口的串行 com,如下所示,但没有结果:
stty -F /dev/ttySn ispeed 115200 && cat </dev/ttySn
Run Code Online (Sandbox Code Playgroud)
执行sudo setserial -g /dev/ttyS[012345]它产生:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 5
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 7
/dev/ttyS4, UART: 16550A, Port: 0x02f0, IRQ: 11
/dev/ttyS5, UART: 16550A, Port: 0x02e0, IRQ: 10
Run Code Online (Sandbox Code Playgroud)
请帮助弄清楚如何通过串口访问该3G卡以发送AT命令。
我在启动时收到以下错误消息,就在被要求输入我的主密码以访问我的加密硬盘驱动器(使用 dm-encrypt)之前:
lvmetad is not active yet, using direct activation during sysinit.
Run Code Online (Sandbox Code Playgroud)
我想知道我是否确实将整个事情设置正确以及如何在启动时解决此错误。
首先,我在 MacBook Pro 笔记本电脑上运行带有不稳定 (Sid) Debian 发行版的 Linux。因此,我使用 UEFI 引导(使用 GRUB2)以及加密硬盘驱动器。
以下是关于我的设置的一些信息(如果您缺少信息,请随时询问更多信息):
首先,这是对我的分区的读取(我使用 MacOS X 进行双启动(也已加密,因此无法从 Linux 部分访问其分区)。
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 9.6M 1.6G 1% /run
/dev/mapper/Linux-rootfs 55G 24G 30G 45% /
tmpfs 7.8G 440K 7.8G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/Linux-homefs 219G 83G …Run Code Online (Sandbox Code Playgroud)