我只想安装某些应用程序的旧版本。我对某些应用程序的旧版本更熟悉,在 Windows 中,你可以在 Ubuntu 中安装旧版 exe 文件,我不知道。
主页
我对 Ubuntu 还很陌生,我对 Ubuntu 的工作原理并不是很了解,当我运行 sudo apt update 或当我想要安装应用程序或添加 repo 时,我收到超时错误或无法获取,我也尝试更改 dns。
例如 :
Err:8 http://in.archive.ubuntu.com/ubuntu bionic InRelease
Could not connect to in.archive.ubuntu.com:80 (103.97.84.254), connection timed out
有什么需要更改或重置吗?
安全摄像头中的 µSD 卡突然停止录制:
- 大部分数据都消失了(没问题)。
- 仍然存在的数据是正确且可读的。
- 该卡现在始终以只读方式安装(在 Chromebook、Windows 和 Ubuntu 上)。
我无法重新格式化它或用它做任何事情:
$ df
/dev/mmcblk0 vfat 117G 15G 102G 13% /media/ray/xxx
$ sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 116.1 GiB, 124657860608 bytes, 243472384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
$ sudo fsck /dev/mmcblk0
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
open: Read-only file system
$ sudo hdparm -r0 /dev/mmcblk0
/dev/mmcblk0:
setting readonly to 0 (off)
readonly = 1 (on)
$ sudo hdparm -r0 /dev/mmcblk0
/dev/mmcblk0:
setting readonly to 0 (off)
readonly = 1 (on)
$ sudo fsck /dev/mmcblk0
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
open: Read-only file system
$ sudo umount /media/ray/xxx
$ sudo mount -o rw /dev/mmcblk0 /media/ray/xxx
mount: /media/ray/xxx: WARNING: device write-protected, mounted read-only.
请注意,这不是全尺寸的 SD 卡;没有物理写保护开关。
这张卡可以回收吗,还是垃圾?
我经常看到有人说最好等到 Ubuntu LTS 版本的第一个版本(例如 24.04.1)发布后再进行升级。这也适用于从临时版本(例如 23.10)升级吗?尤其是当达到的临时版本已过期(EOL)时?
我有一个 ufw 防火墙,具有以下规则:
状态:活动 日志记录:开启(低) 默认:拒绝(传入)、允许(传出)、拒绝(路由) 新配置文件:跳过
行动来自
22/tcp 限制在任何地方
80 限制在任何地方
443 限制在任意位置
22/tcp (v6) 限制在任何地方 (v6)
80 (v6) 限制在任意位置 (v6)
443 (v6) 限制任意位置 (v6)
这些规则限制了端口 22、80 和 443 上的请求数量。除非我使用 ExpressVPN 之类的 VPN,否则这些规则都会得到遵守。端口 22 仍然有限制,但端口 80 和 443 不再受 VPN 限制。
我如何限制请求数量以阻止隐藏在 vpn 后面的黑客?
我的 GPU 是Nvidia GTX 550 ti,我应该提取视频文件的所有帧以供工作。
我的 GPU 不支持最新版本的 CUDA。
我尝试了多种软件来使用我的 GPU 进行帧提取,但它们都使用我的 CPU。
是否有任何软件或方法可以使用我的 GPU 卡提取视频的所有帧?
请完整解释您对我的问题的解决方案(必须安装哪个版本以及...)
请注意,我没有足够的预算来购买新的 GPU 卡
假设我是一个精神病患者,我将我的文件命名为:
[-] `{title: "Non-Metadata", id: "s4a4ji"}`{.JSON5}.dir
这是我尽力做出最丑陋、最合理的文件名的尝试 —— 它使用 Pandoc Markdown 和 JSON5。
POSIX
如果我将其输入到 中ls
,它会为我提供一个转义版本,这样任何符合 POSIX 标准的 shell(当然是 sh,但bash
在 Fedora 40 中也是 )都可以毫无问题地解释它:
-
ls "$PWD"
-
' [-]'$'\t''`{title: "Non-Metadata",'$'\t''id: "s4a4ji"}`{.JSON5}.dir'
八位字节
但是,tree
似乎file
用一种八位字节转义表示形式替换非 ASCII 字符,而这种表示形式似乎无法以上述方式使用:
-
tree "$PWD"
-
. └── [-]\011`{title: "Non-Metadata",\011id: "s4a4ji"}`{.JSON5}.dir 2 directories, 0 files
UTF-8
当然,PowerShell CoreGet-ChildItem
只输出完整的 UTF-8 表示形式:
-
Get-ChildItem -LiteralPath "$PWD" | Select-Object -ExpandProperty 'Name'
-
[-] `{title: "Non-Metadata", id: "s4a4ji"}`{.JSON5}.dir
这些操作方式为何不同?我期望ls
、tree
和file
至少操作方式相同,因为据我所知,这些都是 GNU CoreUtils。此外,PowerShell 似乎表明,没有什么从根本上强制这些工具转义非 ASCII 字符,那么它们为什么要这样做呢?
欢迎使用PowerShell指南包含以下PowerShell命令的等效
项pwd
:cd
、、、、、、、、、、、、、、、、和:https : //mathieubuisson.github.io/powershell-linux-bash/ls
find
cp
rm
mkdir
touch
cat
tail
grep
uname
mkfs
ping
man
cut
此外,还可以找到其他命令行命令的附加等效项,例如which、where、alias、wget、curl、type、%0,甚至命令覆盖。
但是,我仍然无法弄清楚如何for
在 Powershell 中执行简单语句。例如,以下内容将根据文件名对所有文件进行分组,假设每个文件名都有一个 .txt 等效文件:
set b=0
for %a in (*.txt) do set /a b=!b!+1 > NUL & echo (!b!) & dir /b %~na.*
PowerShell 中的等效命令是什么?命令
ls *.txt | ForEach-Object {Split-Path -LeafBase -Path $_.Name}
列出文件。但是,我如何将文件名传递给命令dir /b %~na.*
?似乎只要我关闭 For-Each-Object 命令的括号,结果就会以聚合的形式传递,而不是能够一次处理一行。如果我在 Split-Path 周围添加另一层,那么最终会$_
变成一个不同的对象,因此无法将文件名与扩展名分开。
编辑:有没有更好的方法可以让我一次解析一个结果?该for
命令是在评论中建议的;我只是很难弄清楚如何让它处理所有 *.txt 文件;但如果可行,也许这就是要走的路?
如果可能的话,最好从命令行执行此操作,而无需写入文件。
我已经找到了许多使用 ffprobe 查找视频中关键帧位置的解决方案,但它们都很慢,例如 8k 视频的实际时间大约是 0.1 倍。
虽然这对于在视频开头附近找到关键帧来说很好,但我不想等待 10 个小时来找到 1 小时标记附近关键帧的位置。
有谁知道如何快速获取时间戳之前或之后关键帧的位置?
慢速回答示例:
如何使用 FFmpeg 获取给定时间戳之前最近关键帧的时间戳?
使用 FFmpeg 获取给定时间戳之前关键帧的时间戳
在 FFMPEG / Python 中获取视频中的 I 帧列表
我正在尝试在 Ubuntu 22.04.4 LTS 机器上将 GRUB 2.06 更新到 2.12,按照 tarball 中包含的 INSTALL 文本文件中的说明进行操作(在文章底部)。阅读先决条件(包括在下面),我发现我需要libdevmapper 1.02.34
。我似乎没有这个文件,因为稍后当我运行 时./configure
,./configure
的输出以以下内容结尾:
*******************************************************
GRUB2 will be compiled with following components:
Platform: i386-pc
With devmapper support: No (need libdevmapper header)
With memory debugging: No
With disk cache statistics: No
With boot time statistics: No
efiemu runtime: Yes
grub-mkfont: No (need freetype2 library)
grub-mount: No (need fuse or fuse3 libraries)
starfield theme: No (No build-time grub-mkfont)
With libzfs support: No (need zfs library)
Build-time grub-mkfont: No (need freetype2 library)
Without unifont (no build-time grub-mkfont)
Without liblzma (no support for XZ-compressed mips images) (need lzma library)
With stack smashing protector: No
*******************************************************
我如何获得 的副本libdevmapper 1.02.34 or later
?
部分内容INSTALL
:
The Requirements
================
GRUB depends on some software packages installed into your system. If
you don't have any of them, please obtain and install them before
configuring the GRUB.
* GCC 5.1.0 or later
Experimental support for clang 8.0.0 or later (results in much bigger binaries)
for i386, x86_64, arm (including thumb), arm64, mips(el), powerpc, sparc64
* GNU Make
* GNU Bison 2.3 or later
* GNU gettext
* GNU binutils 2.9.1.0.23 or later
* Flex 2.5.35 or later
* pkg-config
* GNU patch
* Other standard GNU/Unix tools
* a libc with large file support (e.g. glibc 2.1 or later)
On GNU/Linux, you also need:
* libdevmapper 1.02.34 or later (recommended)
...more content that I have cut out...
Building the GRUB
=================
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code.
2. Skip this and following step if you use release tarball and proceed to
step 4. If you want translations type `./linguas.sh'.
3. Type `./bootstrap'.
The autogen.sh (called by bootstrap) uses python. By default autodetect
it, but it can be overridden by setting the PYTHON variable.
4. Type `./configure' to configure the package for your system.
If you're using `csh' on an old version of System V, you might
need to type `sh ./configure' instead to prevent `csh' from trying
to execute `configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
6. Type `make' to compile the package.
7. Optionally, type `make check' to run any self-tests that come with
the package. Note that many of the tests require root privileges in
order to run.
8. Type `make install' to install the programs and any data files and
documentation.
9. Type `make html' or `make pdf' to generate the html or pdf
documentation. Note, these are not built by default.
10. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
我正在使用 Debian 12 Bookworm。最近我开始收到系统消息,说我的根分区(30GB)空间即将用完。分析后,我发现/var/lib/flatpak/app
占用了 11GB。我该如何将已安装的 Flatpak 应用程序移动到另一个分区以避免占用我的根空间?
谢谢您的帮助!
在hostapd配置文件中,有时我会看到指定 SSID 的密钥ssid
,有时我会看到密钥ssid2
。它们之间有什么区别?我找不到有关 的文档ssid2
。
我正在考虑在我正在编写的实用程序脚本中使用标注jq
,而不是手动解析 JSON。
为了使脚本尽可能地可移植,我想知道哪些版本的 Unix/Linux/MacOS/WSL/etc 支持此命令而无需安装任何额外的包。
同样,在过去,我发现一些脚本使用调出wget
,但默认情况下至少一种版本中缺少调出。
这让我开始思考:是否有某种工具可以告诉人们以这种方式在脚本中使用任意命令是否“安全”?理想情况下,它可以像caniuse 网站一样,显示哪些主要版本在其默认 shell 中支持和不支持命令。
===
编辑:感谢用户 Kusalananda 指出我的示例不是 POSIX 命令,我更改了标题以避免错误标记它们。
我想让我的 (g)awk 脚本更具可移植性,尤其是对于 mawk,因为它是 Debian 的库存 awk。
我一直避免length(array)
使用诸如此类的东西,并将array[outer, inner]
其用于多维数组,而不是array[inner][outer]
(gawk 的真正多数组,而不是 SUBSEP hack)。
and()
但是现在我陷入了位运算符(例如and )的困境lshift()
,gawk 提供了这些运算符,而 mawk 没有。我该如何为 mawk 重新实现这些运算符,最好是不使用 shell?
维基百科(https://en.wikibooks.org/wiki/AWK#Bit_manipulation)只是说:
传统 awk 没有位运算符来提供位操作。但是,gawk 内置了位操作函数,包括 and()、or()、xor()、compl()、lshift() 和 rshift()。
我有两台服务器。
捡来的垃圾,用胶带和泡泡糖拼凑起来的。它是戴尔 R620 和 Gen 8 HPE 部件的混合体,具有 40 个内核/1.5 TB 内存。运行 ubuntu 22.04 和 sql server 2022 Dev 版本。Raid 10 3.7 TB SSD。MDOP 设置为 16。
另一个是托管在三头集群 Xenon Gold 上的虚拟机,所有一切都由 SSD Nas 负责。服务器 2019,SQL Server 标准 2022。分配了 128 GB/16 个核心。MDOP 也设置为 16。数据库是从测试服务器备份/恢复的。
主表存储实时流数据,平均每天新增 1 亿到 2 亿条记录,目前接近 300 亿行,共 4 列。主表设置了列存储索引,数据通过时间戳字段进行排序和填充。
在测试服务器上执行一个简单的查询需要几秒到几分钟的时间,但在即将成为生产的服务器上则需要几分钟到将近一个小时的时间。
测试服务器显示所有 16 个核心均已使用。在生产服务器上,它仅使用两个核心。如果我运行同一查询的多个实例,则生产服务器将在每个执行的查询中额外消耗两个核心。这可以一直进行,直到 CPU 利用率达到 100%。
我正在测试的查询select top 100 * from mlinkdatacsunixtime order by serialtime desc
在测试服务器上运行时间为 1 分钟到 1.5 分钟。在生产中则需要 11 分钟。
我已经检查过:VM 插槽与核心数。每个插槽 2 个/8 个核心。已验证的 SQL Server 显示所有 16 个都处于在线状态且可见。匹配了两个 SQL 实例之间的所有选项。仔细检查了服务器和 DB MDOP 设置。多次执行查询以尝试将表加载到内存中。表大约有 50 GB,在测试多个查询后,Prod 服务器显示仅使用了 128 GB 中的 63 GB。测试服务器徘徊在 250 GB 左右,但其他项目还有很多。
真的希望有人能告诉我,我错过了一些愚蠢的事情。
我的下一个测试是使用 sql Dev 版本重建服务器,看看它是否符合 sql 标准。我最后的救命稻草是试图说服系统管理员和管理层让我在生产中运行 linux 服务器。
鉴于这两个表:
表格1
ID1 | ID2 号 |
---|---|
224 | 2341 |
5234 | 9394 |
6243 | 2342 |
⋮ | ⋮ |
表2
ID | 价值 |
---|---|
224 | 2 |
2341 | 52 |
2342 | 24 |
5234 | 23 |
6243 | 242 |
9394 | 99 |
⋮ | ⋮ |
我想创建这个表:
表3
ID1 | ID2 号 | 差异 |
---|---|---|
224 | 2341 | 52-2 |
5234 | 9394 | 99-23 |
6243 | 2342 | 24-242 |
⋮ | ⋮ | ⋮ |
其中diff
= (id2 的值) - (id1 的值)。
我尝试使用带有连接的多个嵌套子查询来执行此操作,但这似乎是一种相当繁琐/笨拙的方法。最简单的方法是什么?
我们拥有一个庞大的 MS SQL Server 生产环境,其中有数千个表急需索引调整和修剪。有没有关于在生产之外测试拟议更改的最佳方法的建议?
显然,我们可以(并且确实)建立一个 DEV 数据库服务器,我们可以在其中进行更改,但该 DEV 副本不会反映对表的实际需求。我们还有一个使用事务日志传送的生产镜像,但镜像始终是只读的(除非您将它们故障转移到主服务器),因此我们无法在那里测试索引更改。
有没有办法将事务日志发送到非只读镜像的实例? 显然这可能会遇到问题,尤其是在测试环境中进行架构更改时。即使只有索引更改,也可能出现查询超时和其他不一致的行为。
但这正是我们想要做的:给定一组索引更改,在实际负载下,实际查询的表现如何?它们更快吗?它们会失败吗?
几个测试查询是不够的。我们运行各种夜间、每周和每月的处理作业,这些作业对数据库的影响很大。我们还有许多外部脚本和服务,它们以我们并不总是预料到的方式查询和更新数据库。
考虑到所需更改的范围,我非常犹豫是否在未经验证的情况下进行任何实时生产索引更改。
我已收到一个数据库备份文件。
恢复后,我在这个数据库中运行了脚本,它向我显示了查询的行数:
SELECT qs.execution_count,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
ELSE qs.statement_end_offset end -
qs.statement_start_offset
)/2
) AS query_text,
qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,
qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.text like '%SELECT%'
ORDER BY qs.execution_count DESC;
但这不会返回与我在生产数据库上运行时看到的相同的输出。
sys.dm_exec_query_stats 值是存储在服务器级别还是数据库级别?我的意思是还原后数据没有保留吗?
我恢复了主密钥,然后使用以下命令创建了证书和对称密钥 SSMS:
use AdventureWorks2022
DROP MASTER KEY
RESTORE MASTER KEY
FROM FILE = 'c:\stuff\master_key_backup.mas'
DECRYPTION BY PASSWORD = 'ASDF$E£%^IJYK*&234'
ENCRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD'
OPEN MASTER KEY DECRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';
-- create new certificate and symkey to encode a new column
CREATE CERTIFICATE Certificate_test2 WITH SUBJECT = 'Protect my second data';
CREATE SYMMETRIC KEY SymKey_test2 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE Certificate_test2;
然后我使用以下命令加密表中的一列:
open symmetric key SymKey_test2 decryption by certificate Certificate_test2
update AdventureWorks2022.[Person].[EmailAddress]
set email_encrypt = ENCRYPTBYKEY(key_guid('symkey_test2'), emailaddress)
from AdventureWorks2022.[Person].[EmailAddress]
close symmetric key symkey_test2
并测试了它是否可以与以下设备配合使用:
open symmetric key symkey_test2 decryption by certificate certificate_test2
select convert(nvarchar, decryptbykey(email_encrypt)) as 'decrypted email',*
from AdventureWorks2022.[Person].[EmailAddress]
close symmetric key symkey_test2
我把有效的代码放入新脚本中,但是出现了错误:
Please create a master key in the database or open the master key in the session before performing this operation.
如果我包含以下行,我可以使其工作:OPEN MASTER KEY DECRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';
,但我不想在将在存储过程和 Excel 数据调用中调用的新脚本中暴露我的密码。
有没有办法打开主密钥而不暴露密码?最终目标是在由 excel 数据连接调用的存储过程中进行设置,但当然,我不希望最终用户能够访问主密码。