我正在使用 Ubuntu 24.04,最近从 snap 商店安装了 Spotify 应用程序。但就是打不开。我什至尝试使用独立显卡启动它,但仍然无法打开。
主页
对于高级用户来说,这似乎是一个简单的问题,但我尝试过但没有成功。
我想使用dir
命令在终端中获取文件列表,其格式如下:每行只有一个文件,包含完整路径,但没有其他信息,例如:
/home/user/beginner/file1.txt
/media/beginner/movies/video1.mp4
现在我发现我将自动获得此输出,而无需使用外部驱动器文件夹上的开关并将输出定向到文件中。但在硬盘上,它将默认为“列中仅名称”样式。
如何强制 dir 使用我想要的输出格式?
下载并解压 libreoffice 并访问后~/Downloads/tmp/LibreOffice_24.2.3.2_Linux_x86-64_deb/DEB
,我遇到了这个问题。如何在 Ubuntu 22.04 上克服它们?我无法安装任何这些文件。
$ ls
libobasis24.2-base_24.2.3.2-2_amd64.deb libobasis24.2-images_24.2.3.2-2_amd64.deb libobasis24.2-xsltfilter_24.2.3.2-2_amd64.deb
libobasis24.2-calc_24.2.3.2-2_amd64.deb libobasis24.2-impress_24.2.3.2-2_amd64.deb libreoffice24.2_24.2.3.2-2_amd64.deb
libobasis24.2-core_24.2.3.2-2_amd64.deb libobasis24.2-kde-integration_24.2.3.2-2_amd64.deb libreoffice24.2-base_24.2.3.2-2_amd64.deb
libobasis24.2-draw_24.2.3.2-2_amd64.deb libobasis24.2-librelogo_24.2.3.2-2_amd64.deb libreoffice24.2-calc_24.2.3.2-2_amd64.deb
libobasis24.2-en-us_24.2.3.2-2_amd64.deb libobasis24.2-libreofficekit-data_24.2.3.2-2_amd64.deb libreoffice24.2-debian-menus_24.2.3-2_all.deb
libobasis24.2-extension-beanshell-script-provider_24.2.3.2-2_amd64.deb libobasis24.2-math_24.2.3.2-2_amd64.deb libreoffice24.2-dict-en_24.2.3.2-2_amd64.deb
libobasis24.2-extension-javascript-script-provider_24.2.3.2-2_amd64.deb libobasis24.2-ogltrans_24.2.3.2-2_amd64.deb libreoffice24.2-dict-es_24.2.3.2-2_amd64.deb
libobasis24.2-extension-mediawiki-publisher_24.2.3.2-2_amd64.deb libobasis24.2-onlineupdate_24.2.3.2-2_amd64.deb libreoffice24.2-dict-fr_24.2.3.2-2_amd64.deb
libobasis24.2-extension-nlpsolver_24.2.3.2-2_amd64.deb libobasis24.2-ooofonts_24.2.3.2-2_amd64.deb libreoffice24.2-draw_24.2.3.2-2_amd64.deb
libobasis24.2-extension-pdf-import_24.2.3.2-2_amd64.deb libobasis24.2-ooolinguistic_24.2.3.2-2_amd64.deb libreoffice24.2-en-us_24.2.3.2-2_amd64.deb
libobasis24.2-extension-report-builder_24.2.3.2-2_amd64.deb libobasis24.2-postgresql-sdbc_24.2.3.2-2_amd64.deb libreoffice24.2-impress_24.2.3.2-2_amd64.deb
libobasis24.2-firebird_24.2.3.2-2_amd64.deb libobasis24.2-python-script-provider_24.2.3.2-2_amd64.deb libreoffice24.2-math_24.2.3.2-2_amd64.deb
libobasis24.2-gnome-integration_24.2.3.2-2_amd64.deb libobasis24.2-pyuno_24.2.3.2-2_amd64.deb libreoffice24.2-ure_24.2.3.2-2_amd64.deb
libobasis24.2-graphicfilter_24.2.3.2-2_amd64.deb libobasis24.2-writer_24.2.3.2-2_amd64.deb libreoffice24.2-writer_24.2.3.2-2_amd64.deb
$ sudo dpkg -i libreoffice24.2-base_24.2.3.2-2_amd64.deb
Selecting previously unselected package libreoffice24.2-base.
(Reading database ... 520086 files and directories currently installed.)
Preparing to unpack libreoffice24.2-base_24.2.3.2-2_amd64.deb ...
Unpacking libreoffice24.2-base (24.2.3.2-2) ...
dpkg: dependency problems prevent configuration of libreoffice24.2-base:
libreoffice24.2-base depends on libreoffice24.2 (>= 24.2.3.2); however:
Package libreoffice24.2 is not installed.
libreoffice24.2-base depends on libreoffice24.2 (<= 24.2.3.2-2); however:
Package libreoffice24.2 is not installed.
libreoffice24.2-base depends on libobasis24.2-base (>= 24.2.3.2); however:
Package libobasis24.2-base is not installed.
libreoffice24.2-base depends on libobasis24.2-base (<= 24.2.3.2-2); however:
Package libobasis24.2-base is not installed.
dpkg: error processing package libreoffice24.2-base (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
libreoffice24.2-base
我当前有一个 Ubuntu 22.04 LTS 服务器:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-107-generic x86_64)
当我尝试通过sudo do-release-upgrade
(不带-d
!)进行版本升级时,它告诉我:
Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS development release
set Prompt=normal in /etc/update-manager/release-upgrades.
我已经发现升级通道还没有开放,所以没关系。
但我有点担心它说development version
。我已经打电话了,do-release-upgrade
没有-d
选项。我不想升级到开发版本。
我发现这个问题建议删除/etc/apt/sources.list.d/proposed.list*
:
但这些文件不存在于我的文件系统中:
****@****:~$ ls -l /etc/apt
total 32
drwxr-xr-x 2 root root 4096 Mai 17 09:09 apt.conf.d
drwxr-xr-x 2 root root 4096 Apr 8 2022 auth.conf.d
drwxr-xr-x 2 root root 4096 Nov 21 10:35 keyrings
drwxr-xr-x 2 root root 4096 Mai 17 09:09 preferences.d
-rw-r--r-- 1 root root 2445 Nov 1 2023 sources.list
-rw-r--r-- 1 root root 2403 Aug 10 2023 sources.list.curtin.old
drwxr-xr-x 2 root root 4096 Nov 21 10:43 sources.list.d
drwxr-xr-x 2 root root 4096 Aug 10 2023 trusted.gpg.d
****@****:~$ ls -l /etc/apt/sources.list.d
total 4
-rw-r--r-- 1 root root 110 Nov 21 10:43 docker.list
我需要担心这条do-release-upgrade
消息吗?There is no development version of an LTS available.
如果是,如何切换到非开发版本?
注意:我自己没有在该系统上安装 Ubuntu Server。我不知道它安装的是哪个版本,也许它已经是开发版本:-/
我已经知道如何在给定目录中执行此操作:
for file in *.png; do
mv -- "$file" "$RANDOM-$RANDOM-$RANDOM.png"
done
如何将其变成递归命令?
我有一个看起来像这样的数据集:
顾客 | 第 1 列 | 第2栏 | 第3栏 |
---|---|---|---|
鲍勃 | 111 | 2221 | |
迈克尔 | 112 | ||
安娜 | 113 | 2223 | |
雷切尔 | 114 | 2224 | 第334章 |
5人 | 115 |
我想将所有数据放入一列中,如下所示:
顾客 | 第 1 列 |
---|---|
鲍勃 | 111 |
鲍勃 | 2221 |
迈克尔 | 112 |
安娜 | 113 |
安娜 | 2223 |
雷切尔 | 114 |
雷切尔 | 2224 |
雷切尔 | 第334章 |
5人 | 115 |
我尝试转置原始数组,然后将其他列的数据合并到一列中,但无法使其工作。我们还尝试了数据透视表,但没有成功。我认为索引/匹配可以工作,但它不适用于将数据合并到一列中。这应该怎么做呢?
我们使用的是 Excel 2010,Google 表格中也有相同的数据。
我有一个包含很多文件的文件夹。大约 200-300 个文件。我尝试使用 PowerShell 添加每个文件 001、002 等。
这意味着如果我的文件夹中有这些文件:
hello.mp4
buy.mp4
gohome.mp4
它们将位于 PowerShell 脚本之后:
001_hello.mp4
002_buy.mp4
003_gohome.mp4
所有文件依此类推。我试过:
$nr = 1
(Get-ChildItem -Path 'C:\Users\A\Desktop\1' -Filter '*.*' -File) | Rename-Item -NewName { '{0:D3}{1}' -f ($script:nr++), $_.Extension }
但是,它重命名了所有文件,我想保留该名称,只是在文件名之前添加 001_。
我对使用 Handbrake 还很陌生,众多的配置有点令人困惑。
我查看了文档和论坛,并且自己做了一些测试,发现使用 Fast 1080p30,mkv 480p 视频的大小通常会减小到 30%。
如果我理解正确的话,配置的分辨率只会影响分辨率限制,所以我是否应该检查视频的所有分辨率并使用正确的配置(例如,480p 视频使用快速 480p30,720 视频使用快速 720p30 等) ,或者我可以使用快速 1080p30 来处理所有内容,同时保持合理的压缩级别吗?
请注意,我不想知道是否非常快/快速/总部/等。更好,因为“快速”似乎是一个很好的折衷方案,而且我并不受计算机上可用空间的限制。
我正在尝试在新的 SSD(WD 蓝色 2TB,1.8TB 可用)上安装 linux(使用 USB)。
在分区步骤中,我使用了 GPT 表和这些分区:
- /启动 1GB
- /交换4GB
- /根60GB
- /home剩余空间
我分配大小的方式是:default value
第一个扇区,第二个扇区相应的+1G、+4G、+60G。
对于最后一个分区 (/home),我default value
为两个扇区都选择了 ,因此我希望 fdisk 将所有剩余空间(大约 1735GB)分配给最后一个分区,但令我惊讶的是 fdisk 最终为其分配了 1.8TB。
我虽然也许 fdisk 没有计算正确,所以为了看看会发生什么,我继续安装直到最后,然后我使用 fdisk、df 和 lsblk 再次检查分区大小,所有这些都给了我相同的输出:
- /启动 1GB
- /交换4GB
- /根59GB
- /home 1.8TB
所以首先是一个59GB而不是60GB的/root,但更重要的是,为什么我的/home分区有SSD的所有可用空间?我可以理解 /root 显示 59GB 可能是因为它错误地分配了一些较少的字节,但我的 /home 分区不应该分配给它的 SSD 的所有可用空间,这里发生了什么?
我第二次尝试将所有分区一一删除并重新创建,但结果是一样的。
有可能解决这个问题吗?或者我的SSD有故障?
有时我需要将文件批量重命名为随机或伪随机文件名,仅八个小写字母和数字,例如从mcmurdo-station.png
到类似a12bc0xy.png
. 为此,我使用 CRC32:
for f in *.png; do mv $f $(crc32 $f); done
但有一个缺点,如果同一个文件夹中有两个相同的文件,它们具有相同的校验和,因此会出现文件名冲突。当然,通常我不会将相同的文件存储在同一个文件夹中,但我仍然希望在批量重命名时避免这种过度自动化。
我在互联网上找到的另一种方法是使用base64:
foo % randomname() { head -c8 /dev/urandom | base64 | tr -dc a-z0-9; }
zmv '(*).(*)' '`randomname`.$2'
但生成的文件名长度不同:第一个测试文件从foo.png
to重命名52rud.png
,而第二个测试文件从bar.png
to 重命名pxg.png
。
还有一个使用shuf
GNU Core Utils 的解决方案:https://unix.stackexchange.com/a/259761,但现在我更愿意找到一种不需要安装第三方软件包的方法。
什么是好的且简单的替代方案?
根据man cp
,使用cp -P * foo/
意味着不会遵循任何符号链接:
-P
:不遵循任何符号链接。-R
如果指定了该选项,则这是默认值。
但是如何以相同的方式复制文件,即不遵循符号链接,使用 Zsh glob 限定符而不使用-P
?我需要使用cp *(.) foo/
还是需要cp *(-.) foo/
替代使用?
Bash 和 Zsh 之间有什么实际区别?关于询问不同:
foo*(.)
:仅匹配常规文件foo*
以及到常规文件的符号链接,而不是目录和其他特殊文件。foo*(-.)
:仅匹配常规文件foo*
,不匹配符号链接和其他特殊文件。
似乎答案是foo*(-.)
,但我不确定,我真的很想弄清楚这些事情。
zsh 5.9 (x86_64-apple-darwin23.0)
我注意到,对于 SSH_AUTH_SOCK 值,其他任何人都无法访问其文件夹,但任何人都可以读取实际文件本身。这样的设计背后的原因是什么?
如果我放置一个世界可读的符号链接/tmp
指向我的私有 SSH_AUTH_SOCK 文件,它会带来什么样的安全风险?
使用 时,使用[0-9]
或代替<->
匹配数字是否有任何区别(实用或不实用) zmv
?
例如,我尝试了以下两个命令,它们的工作原理似乎相同。任一者将所有文件(例如foo1.jpg
或 )复制bar0053.png
到images
目录中。
zmv '*<->.(gif|jpg|png)' 'images/'
zmv '*[0-9].(gif|jpg|png)' 'images/'
使用 glob 限定符搜索时如何排除一个或多个文件名后缀?
工作正常,这里我们匹配文件名后缀,而不是排除它们:
print -rC1 **/*.(txt)(.)
print -rC1 **/*.(jpg|png)(.)
我们并不是试图排除它们,但行不通:
print -rC1 **/*.(^txt)(.)
print -rC1 **/*.(^jpg|^png)(.)
zsh 5.9 (x86_64-apple-darwin23.0)
我有一个高级服务级别的主数据库。
我正在尝试为不同的区域创建第二个地理副本。主要副本位于东海岸,第一个副本位于中南部,现在我正在尝试在 West 2 创建第二个副本。
文献指出,我可以为单个主节点创建最多四个副本。(我已经看到提到这需要高级服务级别的事实,因此我已将数据库提升到高级级别。)
最多可以为主节点创建四个地理辅助节点。如果只有一个辅助节点并且发生故障,则应用程序将面临更高的风险,直到创建新的辅助节点。如果存在多个辅助节点,即使其中一个辅助节点发生故障,应用程序仍将受到保护。额外的辅助节点也可用于横向扩展只读工作负载。
我已经创建了第一个副本,现在我正在尝试在不同的区域创建第二个副本。我一直收到同样的错误:
已达到复制限制。数据库“test”不能有超过 1 个复制关系。(代码:GeoReplicaLimitReached)
不能有多个复制关系吗?但文献说我最多应该有四个?
这是数据库配置的更完整快照。
谢谢你的建议!
我的数据库中有以下表格。
姓氏表
CREATE TABLE [dbo].[LastNames](
[LastNameID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
CREATE UNIQUE CLUSTERED INDEX [CIX_LastNames_LastName] ON [dbo].[LastNames]
(
[LastName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
名字表
CREATE TABLE [dbo].[FirstNames](
[FirstNameID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
CREATE UNIQUE CLUSTERED INDEX [CIX_FirstNames_FirstName] ON [dbo].[FirstNames]
(
[FirstName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
人员匿名表
CREATE TABLE [dbo].[PersonsAnon](
[PersonID] [int] IDENTITY(1,1) NOT NULL,
[LastNameID] [int] NOT NULL,
[FirstNameID] [int] NOT NULL,
[Info1] [bit] NULL,
[Info2] [char](1) NULL,
[Info3] [nchar](50) NULL,
[AdressID] [int] NULL
) ON [PRIMARY]
GO
CREATE UNIQUE CLUSTERED INDEX [CIX_PersonsAnon_PersonID_LastNameID_FirstNameID] ON [dbo].[PersonsAnon]
(
[PersonID] ASC,
[LastNameID] ASC,
[FirstNameID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [NIX_PersonsAnon_LastNameID_FirstNameID] ON [dbo].[PersonsAnon]
(
[LastNameID] ASC,
[FirstNameID] ASC
)
INCLUDE([PersonID]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
数据生成
对于那些拥有 AdventureWorks2014 数据库的人,我使用以下语句来填充表:
INSERT INTO dbo.LastNames (LastName) SELECT DISTINCT app.LastName FROM AdventureWorks2016.Person.Person AS app
INSERT INTO dbo.FirstNames (FirstName) SELECT DISTINCT app.FirstName FROM AdventureWorks2016.Person.Person AS app
INSERT INTO dbo.PersonsAnon (LastNameID, FirstNameID)
SELECT ln.LastNameID, fn.FirstNameID FROM LastNames ln CROSS APPLY FirstNames fn
该声明
使用以下语句来查看将创建什么样的执行计划:
SELECT pa.PersonID,
fn.FirstName,
ln.LastName,
pa.Info2
FROM PersonsAnon AS pa
JOIN LastNames AS ln
ON pa.LastNameID = ln.LastNameID
JOIN FirstNames AS fn
ON pa.FirstNameID = fn.FirstNameID
WHERE ln.LastName LIKE 'Pet%'
AND fn.FirstName LIKE 'John%'
ORDER BY
ln.LastName,
fn.FirstName;
查询执行计划
问题
为什么即使没有 JOIN 谓词,也要在 LastNames 和 FirstNames 之间执行 JOIN?是什么导致 QO JOIN 这两个表?
图解情况
它看起来是这样的:
细节显示:
已查阅的文章
删除列操作是否可扩展?
以前,我们在更新大量记录时遇到问题,因为它占用了更多空间。
删除列操作是否就是这种情况?
我有以下形式的查询:
IF EXISTS (
SELECT 1
FROM (
SELECT RowID, OETID
FROM @InMemoryTableTypeTable i
UNION
SELECT RowID, OETID
FROM @InMemoryTableTypeTable d
) AS t
WHERE NOT EXISTS (
SELECT 1
FROM dbo.MyTable m WITH(FORCESEEK, ROWLOCK, UPDLOCK)
WHERE (m.OETID = t.RowID)
AND (m.SRID = t.OETID)
AND (m.WTID = @WTID)
AND (m.Status <> 1)
AND (m.SRID > 0)
)
)
...
的定义dbo.MyTable
是:
CREATE TABLE [dbo].[MyTable](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[RowGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[WTID] [bigint] NOT NULL,
[OETID] [int] NOT NULL,
[SRID] [bigint] NOT NULL,
[Status] [tinyint] NOT NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IDX] ON [dbo].[MyTable]
(
[WTID] ASC,
[OETID] ASC,
[SRID] ASC
)
INCLUDE([Status])
WHERE ([SRID]>(0))
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MyTable] ADD CONSTRAINT [DF_MyTable_RowGUID] DEFAULT (NEWID()) FOR [RowGUID]
GO
的定义@InMemoryTableTypeTable
是
CREATE TYPE [dbo].[TableType] AS TABLE(
[ID] [bigint] NOT NULL,
[RowID] [int] NOT NULL,
[OETID] [int] NOT NULL,
PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)
)
WITH ( MEMORY_OPTIMIZED = ON )
GO
该表MyTable
包含约 500k 行,并具有唯一的筛选索引,该索引具有:
WTID
,OETID
并按SRID
该顺序作为键- 过滤器,其中
SRID
> 0 Status
作为包含的列
这意味着该EXISTS
语句是可SARGable 的。
然而,根据有多少记录@InMemoryTableTypeTable
以及 SQL Server 似乎处于什么状态,有时索引查找只会继续查找WTID
并将其余谓词推入左反半连接。如果发生这种情况并且 SQL Server 本身的内存面临压力,则查询可能会等待 20 分钟左右。对于某些值,@WTID
可能有 1 行,也可能有 200k 行刚刚在同一会话中插入。
这是一个好的计划:https://www.brentozar.com/pastetheplan/?id=H1- V_Jz7R
这是糟糕的计划:https://www.brentozar.com/pastetheplan/? id=SJD-QZGQA
有没有办法强制 SQL Server 每次都将谓词应用于索引查找中的所有 3 列?
我尝试将其从 IF 中打破并使用OPTIMIZE FOR UNKNOWN
和OPTIMIZE FOR (@WTID UNKNOWN)
提示,但无济于事。
查找更多的是为了并发性:每个会话在该表中的读取和写入将由 WTID 分隔。然而,删除这些表提示没有什么区别,它总是扫描 t 并查找 m,OETID 和 SRID 谓词的位置似乎会产生差异。
这篇文章《实际行数和估计行数差异很大》让我得到了ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES
提示,该提示会生成我想要的计划(大多数时候)以及RECOMPILE
. 将此与FORCE_LEGACY_CARDINALITY_ESTIMATION
恢复“错误”计划结合起来。