有人建议我将未经修改的 X 显示的副本定向到一个文件,然后将该文件转换为通用视频文件。我将使用哪些命令在 Kubuntu 系统上执行此操作?(编辑:他说了一些关于将显示端口附加到文件的内容。)如果不可能,对于不依赖于快速硬件的优质屏幕录制,我的最佳选择是什么?
背景:我尝试将 avconv 与 -f x11grab 和一些 GUI 程序一起使用。但是,无论我尝试什么,生成的视频要么有伪影/模糊,要么断断续续(丢失帧)。这可能是由于 CPU/内存限制。
目标:
我已经尝试过的:
ffmpeg -f x11grab -s xga -r 30 -i :0.0 -qscale 0.1 -vcodec huffyuv grab.avi,然后使用ffmpeg -i grab.avi -sameq -vcodec mpeg4 grab.mp4.
avconv -f x11grab -s xga -r 25 -i :0.0 simple.mpg使用 avconv 版本 0.8.3-4:0.8.3-0ubuntu0.12.04.1-codec:copy(失败:Requested output format …我正在学习关于Linux的Kubuntu我18.04工作站上的网络,我看到有两个NetworkManager和networkd-dispatcher正在运行:
oleg@eclectic:~$ sudo ps -ef | grep -i net
root 56 2 0 Oct11 ? 00:00:00 [netns]
root 1097 1 0 Oct11 ? 00:00:02 /usr/sbin/NetworkManager --no-daemon
root 1098 1 0 Oct11 ? 00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root 1250 1 0 Oct11 ? 00:00:02 /usr/sbin/inetd
root 1593 1097 0 Oct11 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...
Run Code Online (Sandbox Code Playgroud)
NetworkManager似乎被配置为通过netplan以下方式处理“一切” :
oleg@eclectic:~$ cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2 …Run Code Online (Sandbox Code Playgroud) networking networkmanager linux-kernel systemd-networkd netplan
什么是“回滚”,并在节目像“滚动缓冲区”bash和screen,以及它们如何涉及到TTY,正在运行的程序,标准输入/输出/标准错误?
这是迄今为止我发现的“回滚”的唯一定义(在archlinux wiki 中):
回滚是在文本控制台中实现的一项功能,它允许用户返回查看已滚出屏幕的文本行。这是通过在视频适配器和显示设备之间为此目的创建的缓冲区实现的;回滚缓冲区。
但是,这给我带来了更多的问题:
vim中screen启动的bash启动中ssh启动,这些程序中的哪些正在控制回滚缓冲区?我也用screen,以转储回溯到一个文件中。这个文件的顶部有很多空白,我的终端模拟器显示的“视图”似乎只是缓冲区底部的几行。
vim可以“清除”我的整个终端窗口,因为它可以临时访问父 shell 的回滚缓冲区?vim使用它自己的回滚缓冲区,该缓冲区以某种方式覆盖在父回滚缓冲区之上?在 bash 中修改此命令以仅在组不存在时运行的最干净方法是什么?
groupadd somegroupname
Run Code Online (Sandbox Code Playgroud)
最好是单线。
如何保留我使用的所有远程命令的本地时间戳记录ssh(命令行 openssh 客户端通过bash)?
要求:
基本的:
高优先级:
很高兴有:
ssh或su <user>会话期间输入的命令)bash基于非 root 的解决方案是最好的(也许是命令的一个alias或bash包装脚本ssh?)我的技能水平:
bash和“Linux 方式”,因此非常感谢带有简要说明的代码示例。可能的策略
screen每秒进行一次回滚转储,并diff在它们之间查找新的回滚行——问题:如何以有用的自动化方式实现?ssh "$@" | tee >(some_cleaner_function >> $logfile) -- 问题:无法处理链式会话中的多行命令或历史记录,需要仔细清理(见我的回答)一个例子
以下 SSH 会话:
user@local:~$ ssh user@remote
Last …Run Code Online (Sandbox Code Playgroud) 在我的笔记本电脑上,我仅使用 MySQL 和 PostgreSQL 进行测试。在我开始编程之前我不需要它们,这可能是启动后几个小时。但是手动启动服务并输入我的 sudo 密码是一个(小)烦恼。
我读到 systemd 仅在访问该服务的端口时才支持启动服务。但是在 Google 上的快速搜索似乎表明 PG 和 MySQL 尚不支持基于套接字的激活。
我意识到我可以使用 shell 脚本来破解它或等待维护者修复服务,但我现在正在寻找更好的方法(用于教育目的)。
问题:如何以利用 systemd 功能或被推荐为 Linux“最佳实践”的方式实现此类服务的按需启动?
一些想法:
systemd 229、Kubuntu 16.04、MySQL 5.7、PostgreSQL 9.5
更新:答案:
我如何按照 Siosm 的建议使用 systemd-socket-proxyd:
/etc/mysql/mysql.conf.d/mysqld.cnf
port = 13306
Run Code Online (Sandbox Code Playgroud)
/etc/systemd/system/proxy-to-mysql.socket
[Socket]
ListenStream=0.0.0.0:3306
[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)
/etc/systemd/system/proxy-to-mysql.service
[Unit]
Requires=mysql.service
After=mysql.service
[Service]
# note: this path may vary
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:13306
PrivateTmp=no
PrivateNetwork=no
Run Code Online (Sandbox Code Playgroud)
根据需要重新加载/停止/启动:
sudo systemctl daemon-reload
sudo systemctl enable proxy-to-mysql.socket
sudo systemctl start proxy-to-mysql.socket
sudo systemctl stop mysql.service # for testing …Run Code Online (Sandbox Code Playgroud) 我有各种非 kde 应用程序,它们将图标放置在系统中的各个位置,并且 Plasma5 菜单和任务管理器小部件会忽略它们,除非我仅在以下位置符号链接到它们:
/usr/share/icons/hicolor/scalable/apps/<icon-name>.svg(如果图标是 svg)或/usr/share/icons/hicolor/48x48/apps/<icon-name>.png(如果图标为 48x48)或/usr/share/icons/hicolor/32x32/apps/<icon-name>.png(如果图标是 32x32)这是为什么?如何添加更多搜索路径和图标大小?例如,gworldclock仅在 中放置图标/usr/share/pixmaps/gworldclock.png,其他应用程序仅安装 128x128 的图标。
已经尝试过:
我尝试修改KDEDIRSin~/.kde/env/somefile.sh和~/.pam_environment,但这些都对 的输出没有任何影响kde4-config --path icon。我还在我的用户图标目录(.kde/share/icons/)中创建了符号链接,但这也没有效果。指定桌面文件中图标的绝对路径似乎也不起作用(尽管到目前为止我只尝试过使用 128x128 图标)。
更多信息:
当前搜索路径:
$ kde4-config --path icon
/home/oleg/.kde/share/icons/:/usr/share/kubuntu-default-settings/kde4-profile/default/share/icons/:/usr/share/icons/
Run Code Online (Sandbox Code Playgroud)
软件版本(Kubuntu 15.04):
$ kde4-config --version
Qt: 4.8.6
KDE Development Platform: 4.14.13
kde4-config: 1.0
$ plasmashell --version
plasmashell 5.4.2
Run Code Online (Sandbox Code Playgroud) 我想创建一些目录的压缩镜像,以便可以从原始目标和远程目标再次同步。
我可以通过两步低效地完成:
rsync -a /source/ /compressed-mirror/
gzip --recursive --rsyncable --force /compressed-mirror/
# later: rsync -a /compressed-mirror/ remote:/another-compressed-mirror/
Run Code Online (Sandbox Code Playgroud)
问题是,如果我重新运行第一个 rsync 来更新镜像,它需要重新复制和 gzip 所有源文件,即使只有其中几个发生了更改。
问题:是否有其他方法可以最大限度地减少每次更新所需的数据传输量和硬盘使用量?
笔记:
我并没有坚持使用 gzip 进行压缩 - 我选择它只是因为它允许重新同步压缩文件。
本地压缩镜像的目的是最大限度地减少与远程镜像进行 rsync 所需的“网络运行”时间,因为源计算机(笔记本电脑)的互联网连接和电源状态都不可靠。本地镜像的某些部分在 rsync 到远程镜像之前会被加密。然后,远程镜像会使用 rsnapshot 进行版本控制,并通过更稳定的互联网连接上传到另一台远程服务器。
更新/想法:
gzip < source/path/file > mirror/path/file.gz。这似乎是迄今为止最有效的解决方案。我正在寻找一种干净、“现代”的方式来配置、启动和停止dummy0网络接口(从dummy内核模块)。
我/etc/network/interfaces曾经在较旧的系统上工作,但现在在ifup dummy0以下系统上静默失败:
iface dummy0 inet static
address 10.10.0.1
netmask 255.255.255.0
# post-up ip link set dummy0 multicast on
Run Code Online (Sandbox Code Playgroud)
取消注释该post-up行会产生此错误(显示它运行但从未创建接口):dummy0: post-up cmd 'ip link set dummy0 multicast on'failed: returned 1 (Cannot find device "dummy0")
这个 shell 脚本运行良好,但不是一个很好的干净的配置文件:
#!/bin/sh
sudo ip link add dummy0 type dummy
sudo ip link set dummy0 multicast on
sudo ip addr add 10.10.0.1/24 dev dummy0
sudo ip link set dummy0 up
Run Code Online (Sandbox Code Playgroud)
我的目的是手动 …