AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-543422

frankfalse's questions

Martin Hope
User051209
Asked: 2025-04-23 00:00:38 +0800 CST

如何根据 Linux“file -s”命令的输出确定分区的文件系统类型?

  • 7

我的问题是在我的系统上解码该命令的输出(与 USB 密钥关联的设备文件在哪里)。 下面我将展示该命令的输出,其中设备文件是一个使用文件系统格式化的分区,而设备是一个使用文件系统格式化的分区。file -s /dev/sdX/dev/sdX
file -s /dev/sdX/dev/sda1FAT32/dev/sdbNTFS

文件系统file命令的输出FAT32

对于FAT32文件系统,该命令的输出file是:

> file -s /dev/sda1
/dev/sda1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 8, Media descriptor 0xf8, sectors/track 62, heads 31, hidden sectors 2048, sectors 1966080 (volumes > 32 MB), FAT (32 bit), sectors/FAT 1920, reserved 0x1, serial number 0x4ba3ff5b, unlabeled

输出中存在的信息, FAT (32 bit), sectors/FAT 1920,足以说明文件系统类型是 FAT32,但在下一段中我将展示在文件系统的情况下该字符串FAT也出现在命令的输出中。fileNTFS

文件系统file命令的输出NTFS

对于NTFS文件系统,该命令的输出file为:

> file -s /dev/sdb 
/dev/sdb: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical drive 0x80, sectors 15654911, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 030fcd5a9fcd56a1c; contains bootstrap BOOTMGR

此输出中不仅存在信息; NTFS,,还存在字符串FAT。

问题

从命令的先前输出中file -s,如何确定两个分区的文件系统?


编辑我添加了分区和分区的命令
的输出。file -sexfatext4

file的输出exfat

> file -s /dev/sdf
/dev/sdf: DOS/MBR boot sector

在这种情况下,exfat输出中不存在。

file的输出ext4

file -s /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=38bc3d5b-381e-4f19-8640-c77d9483882b (needs journal recovery) (extents) (64bit) (large files) (huge files)

在这种情况下,存在信息ext4 filesystem data,。

在这 4 个示例(FAT32、NTFS、EXFAT、EXT4)中,该命令的输出file对于不同的文件系统类型显得非常不同,因此很难找到一个简单的规则来通过此输出来判断文件系统类型。

filesystems
  • 2 个回答
  • 394 Views
Martin Hope
User051209
Asked: 2025-04-22 21:27:11 +0800 CST

如何在挂载 USB 之前找到其分区的文件系统类型?

  • 6

我需要挂载一个使用 FAT 文件系统格式化的旧 USB 闪存盘。挂载过程必须通过udev执行 Bash 脚本的规则自动执行。

当 USB 密钥插入 USB 端口时,脚本将执行以下命令:

blkid -o udev /dev/sda1 

/dev/sda1USB 中的分区在哪里,并且使用 FAT32 文件系统格式化。上一个针对 USB 密钥的命令输出为空。

blkid对于其他 USB 密钥,相同命令 ( ) 的输出包含udev变量ID_FS_TYPE; 的可能值为ID_FS_TYPE:vfat、ntfs、exfat。

mount如果文件系统是vfat

如果变量的值ID_FS_TYPE是vfat脚本则必须执行以下mount命令:

> mount -o rw,relatime,users,gid=100,umask=000,shortname=mixed,utf8=1,flush /dev/sda1 /mount/point

如果文件系统不是,则命令vfat的选项mount可以如下:

mount -o rw,relatime /dev/sda1 /mount/point

对于特定的 USB 密钥(1 GB 且非常旧),脚本无法知道文件系统类型,vfat因此它执行第二条mount命令;结果是挂载点目录(称为/media/sda1)的权限为:

> ls -l /media/    
total 16
drwxr-xr-x 3 root root 16384 Jan  1  1970 sda1

而我需要:

# ls -l /media/    
total 16
drwxrwxrwx 3 root root 16384 Jan  1  1970 sda1

我需要这些权限,因为所有用户都必须能够在 USB 上写入,而不仅仅是专有用户(在root我的上下文中)。

通过其他命令查找文件系统类型

此链接提供了其他获取此特定 USB 闪存盘文件系统类型的技巧。因此,我尝试了其他命令:

  • lsblk -n -o FSTYPE /dev/sda1:同样在这种情况下,对于我的特定 USB 密钥,命令的输出为空
  • 该命令的输出file -sL /dev/sda1反而很长;我在下面显示了此输出:
> file -sL /dev/sda1
/dev/sda1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MSDOS5.0", sectors/cluster 32, reserved sectors 8, root entries 512, Media descriptor 0xf8, sectors/FAT 240, sectors/track 63, heads 255, hidden sectors 2048, sectors 1966080 (volumes > 32 MB), reserved 0x1, serial number 0xa4906b9d, unlabeled, FAT (16 bit)

此输出中显示了信息FAT (16 bit),但不清楚 USB 闪存盘分区的文件系统是否已格式化vfat。如果我在 NTFS 文件系统格式化的 USB 闪存盘上执行上述file -sL命令,则该命令的输出为:

> file -sL /dev/sda
/dev/sda: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical drive 0x80, sectors 15654911, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 030fcd5a9fcd56a1c; contains bootstrap BOOTMGR

在这个输出中存在字符串NTFS,但还存在字符串FAT,因此通过这个输出不容易确定文件系统是vfat还是不是ntfs。

问题

除了上述命令之外,是否还有其他命令可以在挂载分区之前提供分区的文件系统?

filesystems
  • 3 个回答
  • 143 Views
Martin Hope
User051209
Asked: 2025-03-25 01:50:41 +0800 CST

在我的 yocto 发行版中,USB 密钥的 ntfs 文件系统是以只读方式安装的吗?

  • 6

为了能够挂载使用文件系统格式化的 USB 密钥,ntfs我创建了以下fragment.cfg文件:

CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

我已经使用以下命令编译了内核:

bitbake -C compile virtual/kernel

通过对内核配置进行修改,我的发行版能够ntfs通过以下命令执行 USB 的挂载:

> mount /dev/sda /media/sda

其中/dev/sda是与 USB 密钥关联的设备,/media/sda是挂载点。

文件系统已安装但为只读。以下命令显示此信息:

# mount | grep media
/dev/sda on /media/sda type ntfs (ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1,errors=continue,mft_zone_multiplier=1)

在我已经设置的片段文件中CONFIG_NTFS_RW=y,为什么ntfsUSB 密钥的文件系统是以只读方式安装的?


编辑

如果我执行该命令,dmesg我会收到以下消息:

> dmesg
...
(device sda): load_system_files(): Volume is dirty.  Mounting read-only.  Run chkdsk and mount in Windows.

我已遵循上一条消息中写的信息:

  • 我已将 USB 插入 Windows 系统
  • Windows 系统已对 USB 执行了扫描修复

此后,我在 Linux 系统上正确执行了 USB 的挂载 R/W:

> mount -t ntfs /dev/sda /media/sda
> mount | grep media
/dev/sda on /media/sda type ntfs (rw,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1,errors=continue,mft_zone_multiplier=1)

此时,如果我尝试在 USB 上写入,我会收到以下错误:

> touch /media/sda/write_ntfs.txt
touch: cannot touch '/media/sda/write_ntfs.txt': Permission denied

如果我尝试更改 USB 上文件的权限,也会发生同样的情况:

> chmod 777 /media/sda/filename.csv
chmod: changing permissions of '/media/sda/filename.csv': Operation not supported

因此,尽管命令输出了mount,但 USB 的挂载似乎仍然是只读的!

filesystems
  • 1 个回答
  • 40 Views
Martin Hope
User051209
Asked: 2025-03-22 01:11:01 +0800 CST

在 yocto 发行版中,我无法安装使用 exfat 文件系统格式化的 USB 密钥

  • 5

在我的 yocto 发行版中,我无法使用exfat文件系统安装 USB 密钥。

如果我执行以下命令:

> blkid /dev/sda         
/dev/sda: LABEL="my-label" UUID="FC4D-5949" BLOCK_SIZE="512" TYPE="exfat"

因此我确定 USB 文件系统是exfat,但是当我尝试执行mount命令时出现以下错误:

> mount /dev/sda /media
mount: /media: unknown filesystem type 'exfat'.

如果我执行该命令cat /proc/filesystems(这里我找到了该cat命令),则支持的文件系统列表为:

> cat /proc/filesystems 
nodev   sysfs
nodev   tmpfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cgroup2
nodev   cpuset
nodev   devtmpfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   bpf
nodev   pipefs
nodev   ramfs
nodev   hugetlbfs
nodev   rpc_pipefs
nodev   devpts
        ext3
        ext2
        ext4
        vfat
        msdos
        iso9660
nodev   nfs
nodev   nfs4
nodev   cifs
nodev   smb3
nodev   autofs
nodev   overlay
nodev   efivarfs
nodev   mqueue
        btrfs

exfat丢失。

有人可以解释一下如何exfat在我的 yocto 发行版中安装 USB 吗?

mount
  • 2 个回答
  • 38 Views
Martin Hope
User051209
Asked: 2024-10-02 18:23:49 +0800 CST

在启动脚本的服务文件中设置StandardOutput=null是否相当于将脚本的标准输出重定向到/dev/null?

  • 5

我当前的服务和 Shell 脚本

我有一个名为的 systemd 服务文件myservice.service。该服务在启动时启动。该服务启动 shell 脚本/usr/bin/myscript.sh,如下面的部分所示[Service]:

...
[Service]
Type=forking
ExecStart=/usr/bin/myscript.sh
PIDFile=/dev/shm/myscript.pid
...

脚本内容如下:

#!/bin/sh
/usr/bin/script-python.py > /dev/null &
echo $! > /dev/shm/myscript.pid

shell 脚本myscript.sh启动 Python 脚本:script-python.py。通过重定向,> /dev/null的标准输出script-python.py被发送到/dev/null,因此丢失。

更改为使用 Service->StandardOutput=null

在StandardOutput 的 systemd 文档中我读到了以下句子:

null将标准输出连接到 /dev/null,即写入其中的所有内容都将丢失。

因此,我考虑对我的文件执行以下更改:

  1. myservice.service变为(添加StandardOutput=null):
...
[Service]
Type=forking
ExecStart=/usr/bin/myscript.sh
PIDFile=/dev/shm/myscript.pid
StandardOutput=null
...
  1. myscript.sh变为(删除>/dev/null):
#!/bin/sh
/usr/bin/script-python.py &
echo $! > /dev/shm/myscript.pid

我的问题

我的问题是:如果我进行上述修改,结果与我现在的情况完全相同:所有输出都script-python.py丢失了?没有任何区别吗?

shell-script
  • 1 个回答
  • 37 Views
Martin Hope
User051209
Asked: 2024-01-11 17:30:07 +0800 CST

在 yocto 配方中,什么选择要从 GitHub 存储库下载的版本?

  • 5

我正在使用 yocto 构建我的自定义 Linux 发行版。我需要添加hiredis到我的发行版中。hiredis是一个用于 Redis 数据库的简约 C 客户端库,我需要它来通过 C 应用程序访问 Redis。

食谱hiredis_0.14.0.bb

在我的 yocto 构建系统中,配方存储hiredis_0.14.0.bb在文件夹meta-openembedded/meta-oe/recipes-extended/hiredisso 中的元层中meta-openembedded。

菜谱内容如下:

DESCRIPTION = "Minimalistic C client library for Redis"
HOMEPAGE = "http://github.com/redis/hiredis"
LICENSE = "BSD-3-Clause"
SECTION = "libs"
DEPENDS = "redis"

LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
SRC_URI = "git://github.com/redis/hiredis;protocol=git \
           file://0001-Makefile-remove-hardcoding-of-CC.patch"

S = "${WORKDIR}/git"

inherit autotools-brokensep pkgconfig

EXTRA_OEMAKE = "PREFIX=${prefix} LIBRARY_PATH=${baselib}"

# By default INSTALL variable in Makefile is equal to 'cp -a', which preserves
# ownership and causes host-user-contamination QA issue.
# And PREFIX defaults to /usr/local.
do_install_prepend() {
  export INSTALL='cp -r'
}

Git Fetcher 下载0.14.0hiredis版本

如果我执行命令:

> bitbake hiredis

代码由GitHubhiredis获取并正确编译。从GitHub下载的代码上的版本是0.14.0,而设置为:SRC_URI

SRC_URI = "git://github.com/redis/hiredis;protocol=git \
           file://0001-Makefile-remove-hardcoding-of-CC.patch"

该值表示SRC_URI正在使用Git Fetcher并且未指定参数branch,或者rev表示该参数的值为master。

对版本的唯一引用0.14.0是在配方名称 (hiredis_ 0.14.0.bb) 中,因此选择版本是0.14.0因为变量的值为(该值由配方名称设置)。PV0.14.0PV

我的问题

为什么获取的hiredis库版本是0.14.0最新的而不是最新的?

git
  • 1 个回答
  • 62 Views
Martin Hope
frankfalse
Asked: 2023-11-06 16:20:51 +0800 CST

同一以太网接口的多个 NetworkManager 连接配置文件并不总是正常工作

  • 6

我在 Linux 发行版中使用 3 个 NetworkManager 连接配置文件,所有连接配置文件都引用相同的以太网接口:enp3s0。我正在使用这些连接来管理:

  • 默认静态 IP 配置
  • 设置新的静态 IP 配置
  • 请求 DHCP 地址

在问题的其余部分中,我将使用术语“连接”来表示术语“连接配置文件”。

要更改以太网配置,我会更改连接的优先级,因此,如果我想启用默认静态 IP 配置,我会设置高于静态 IP 配置和 DHCP 配置的优先级。请阅读问题后续部分的“设置 3 个连接的属性”
段落,以获取有关连接优先级设置的详细信息。

问题

如果我在启动时通过由systemd服务启动的 bash 脚本创建连接,则一切正常,但如果我在启动完成后执行 bash 脚本,则 NetworkManager 及其连接配置文件无法正确管理 IP 配置。转到问题末尾的“问题”段落以获取错误的详细描述。

问题的其余部分提供了理解问题所需的所有详细信息。
我对问题的长度表示歉意,但需要很多信息。


创建 3 个 NetworkManager 连接配置文件

为了创建连接,我使用nmcli如下所示的命令:

# for default static
nmcli c add ifname enp3s0 type ethernet con-name ethernet_default_ipstatic
# for ethernet_ipstatic
nmcli c add ifname enp3s0 type ethernet con-name ethernet_ipstatic
# for ethernet_dhcp
nmcli c add ifname enp3s0 type ethernet con-name ethernet_dhcp

执行完路径中的前面的命令后/etc/NetworkManager/system-connections,将出现 3 个文件,名为:

  • ethernet_default_ipstatic.nmconnection
  • ethernet_ipstatic.nmconnection
  • ethernet_dhcp.nmconnection

设置 3 个连接的属性

前面的命令创建了 3 个具有默认属性的连接,因此创建它们后需要设置它们的属性。nmcli为了这个目标,我仍然使用如下所示的命令。

对于ethernet_default_ipstatic连接设置以下属性:

nmcli con mod ethernet_default_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv6.method disabled

上一个命令为连接设置以下属性:

  • ipv4.method = 手动(此设置 IP 静态而不是 DHCP)
  • IP 地址 192.168.1.1,网络掩码 255.255.255.0(无网关)
  • IPV6 已禁用
  • 自动连接属性保持默认 yes
  • 优先级属性保持默认 0

对于ethernet_ipstatic属性是:

nmcli con mod ethernet_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.100 ipv4.may-fail no ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1

上一个命令为连接设置以下属性:

  • ipv4.method = 手动(此设置 IP 静态而不是 DHCP)
  • IP地址192.168.1.1,网络掩码255.255.255.0,网关192.168.1.100
  • IPV6 已禁用,自动连接否,优先级 -1

对于ethernet_dhcp属性是:

nmcli con mod ethernet_dhcp ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.may-fail no ipv4.dhcp-timeout 20 ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1 connection.autoconnect-retries 3

上一个命令为连接设置以下属性:

  • ipv4.method = auto(设置 DHCP 而不是静态 IP 地址)
  • IP地址'',网关''
  • IPV6 已禁用,自动连接否,优先级 -1

默认配置

通过前面的命令,连接ethernet_default_ipstatic比其他连接具有优先级,因此以太网接口enp3s0配置有 IP static 192.168.1.1/24。

nmcli由服务执行命令

nmcli如果我通过以下服务 ( ) 在启动时执行先前的命令,则一切正常my_custom_nm_service.service:

[Unit]
Description=Init NetworkManager Ethernet Connections
Requires=NetworkManager.service
After=NetworkManager.service
Before=network.target

[Service]
Type=oneshot
ExecStart=/home/<username>/script_services/init_connections.sh
User=<username>

[Install]
WantedBy=multi-user.target

其中init_connections.sh执行之前的nmcli命令。

笔记。在单元文件中注意选项的存在:

  • 需要=NetworkManager.service
  • 之后=NetworkManager.service
  • 之前=network.target

问题

如果启动完成后我通过命令删除所有连接,nmcli con del然后执行脚本,init_connections.sh我将获得系统的不可预测的 IP 配置。
发生的典型错误配置如下:

  • 活动连接(由nmcli con命令显示)ethernet_default_ipstatic因此系统应具有静态 IP 地址192.168.1.1/24
  • 但系统已通过 DHCP 服务器获取 IP 地址

init_connections.sh当服务执行脚本时,它在 network.target 之前执行,但老实说,我不知道这种差异对于理解问题是否重要。

systemd
  • 1 个回答
  • 69 Views
Martin Hope
frankfalse
Asked: 2023-10-24 22:34:02 +0800 CST

找到 --quiet 以外的选项以避免文件解密时出现 GPG 警告

  • 5

GPG解密命令

我尝试通过解密文件gpg并执行此操作(成功)以下命令:

gpg --passphrase "12345678" --batch --yes --no-symkey-cache filename.tar.gz.gpg

命令的执行结果为:

  • 文件filename.tar.gz.gpg被正确解密并创建文件filename.tar.gz;
  • 通过选项,--passphrase "12345678" --batch --yes 用于插入密码的 GUI 未打开。

GPG 警告和--quiet选项

但有一个问题:gpg执行上一个命令会产生以下警告:

gpg: WARNING: no command supplied.  Trying to guess what you mean ...

和正确的输出:

gpg: AES256 encrypted data
gpg: encrypted with 1 passphrase

通过这篇文章,我知道通过该选项--quiet,前面的gpg命令不会产生任何输出消息。

该警告似乎告诉我,在我的命令中不存在解密文件的请求filename.tar.gz.gpg。

我的问题

所以我的问题是:
有没有办法告诉gpg它必须解密文件以避免警告no command supplied.?

gpg
  • 1 个回答
  • 74 Views
Martin Hope
frankfalse
Asked: 2023-09-05 16:26:00 +0800 CST

nmcli 命令的选项仅获取 NetworkManager 连接配置文件的名称

  • 5

我知道通过执行命令:

nmcli con show

我获取了 Linux 系统中存在的所有连接配置文件的列表。例如,如果我在 Linux Mint 系统中执行前面的命令,我会得到:

$ nmcli con show
NAME             UUID                                  TYPE      DEVICE   
lan0             b89ebc2f-8702-32d1-8dbf-e8d4cf226ce1  ethernet  enp0s25  
lan1             bd0a02cf-65e9-3cf5-8b51-ef05aa204e7c  ethernet  enp5s0f0 
lan2             4b5d75d9-cab9-3ac5-95e5-cbeddf257cc5  ethernet  enp5s0f1 
lan1 with space  63b628f9-7671-41a4-8d2a-be5cfa34c454  ethernet  --       
lan2 with space  1cd1fb7d-0c5d-4105-ba27-c7e6ce7b6ecb  ethernet  --      

在示例中,连接配置文件的名称包含空格(请参阅lan1 with space和lan2 with space)。

我的需要是执行前面的命令并仅获取连接的列表,NAME而不包含列UUID, TYPE, DEVICE。

在前面的示例中,我希望的输出是:

lan0
lan1
lan2
lan1 with space
lan2 with space

该命令是否有一个选项nmcli可以准确给出之前的输出?

nmcli
  • 1 个回答
  • 11 Views
Martin Hope
frankfalse
Asked: 2023-06-30 18:47:19 +0800 CST

如何通过bash脚本执行的命令清除google-chrome的所有缓存数据?

  • 6

在我的 lubuntu 18.04 发行版中,我安装了 google-chrome 版本 114。

通过 bash 脚本,每次启动时,Chrome 都会启动并连接到特定的 URL。URL 始终相同,但有时网站内容会发生变化,因此我需要在每次启动时清除 google-chrome 的缓存。
这种需求来自于这样的事实:当 chrome 运行时,我的系统总是处于关闭状态(没有正确关闭),因此浏览器没有正确关闭,并且下次启动时其缓存不为空。如果浏览器正确关闭,我可以选择 Google-Chrome 选项,如本链接Clear cookies and site data when you quit Chrome中所述。

我的问题与这篇文章描述的相同。

为了清除缓存,我遵循了此链接中的提示,并创建了一个包含以下命令的 bash 脚本:

  • rm -rf /home/myuser/.cache/google-chrome/*
  • rm -rf /home/myuser/.config/google-chrome/Default/*

该脚本在启动 Google Chrome 之前在启动时执行。

有时,即使非常罕见,我也注意到 Google Chrome 出现一些故障,这可能取决于缓存数据的存在,尽管删除了以前的文件夹。

由于这些故障,我询问前面的命令是否足以删除所有缓存数据,或者我是否必须执行其他操作。


编辑: 了解我在启动时删除的2 个文件夹( in.cache和 in )的作用对我来说也很有用。.config

bash
  • 1 个回答
  • 223 Views
Martin Hope
frankfalse
Asked: 2023-06-27 16:51:50 +0800 CST

dd命令足以删除硬盘上的所有数据吗?

  • 5

我需要从安装 lubuntu 22.04 的硬盘中删除所有数据。我正在考虑从 Ubuntu liveUSB 映像启动,并从终端使用以下命令:

# the Hard Disk is the device file /dev/sda
> sudo dd if=/dev/zero of=/dev/sda

但这个链接告诉我们:

请注意,这将删除所有分区信息,但不是“磁盘擦除”或“安全删除”。如果您想真正确定数据无法恢复,最有效的工具是锤子。

在阅读这些句子之前,我的印象是该dd命令可以安全地删除硬盘上的所有数据。

dd单独的命令不足以安全地擦除硬盘吗?

linux
  • 2 个回答
  • 104 Views
Martin Hope
frankfalse
Asked: 2023-04-07 16:07:30 +0800 CST

为什么我的 C 程序的所有输出到 stdout 都被发送到 journald?

  • 6

我在基于 yocto 的 Linux 发行版上工作。我不是专家systemd,也不是systemd-journald.
我的 C 程序my_c_program在启动时由脚本启动my_script.sh。下面是文件my_script.sh:

my_c_program &
echo $! > /dev/shm/my_c_program.pid

以前的脚本由服务启动。服务的单元文件称为start_c_program.service. 下面是单元服务:

[Unit]
Description=Start my_c_program
Requires=...
After=...
Before=...

[Service]
Type=forking
ExecStart=/usr/bin/my_script.sh
PIDFile=/dev/shm/my_c_program.pid

[Install]
WantedBy=multi-user.target

使用此配置,所有指令都printf("message")将my_c_program字符串添加"message"到systemd-journald. 我知道如果我修改my_script.sh为:

my_c_program > /dev/null &
echo $! > /dev/shm/my_c_program.pid

on 上的消息journald被抑制,但问题是:
为什么我的 C 程序的所有输出都指向 stdout 被发送到journald?

谢谢


我在想,要向我发送消息,journald我必须使用 C 指令syslog(),例如通过如下代码:

#include<syslog.h>
int main(int argc, char** argv) {
    syslog(LOG_INFO, "Start logging");
}
c
  • 2 个回答
  • 47 Views
Martin Hope
frankfalse
Asked: 2022-10-29 06:34:39 +0800 CST

从磁盘中删除由 Redis 命令 BGREWRITEAOF 引起的临时文件

  • 5

上下文描述

Linux 发行版包含 redis-server 6.0.5。Redis 配置为使用持久性AOF(仅附加文件)并且RDB持久性被禁用。

在启动时,脚本请求 redis-server 执行BGREWRITEAOF命令。此请求启动一个进程(使用 PID= ),该进程在写入文件的同一数据 Redis 路径中<pid>创建一个文件。temp-rewriteaof-<pid>.aofappendonly.aof

这是BGREWRITEAOF命令的正常工作。该命令的有用性已通过它在这篇文章中所写的内容得到证明。

有什么问题

BGREWRITEAOF当系统在未完成时关闭时出现问题。在这种情况下,文件temp-rewriteaof-<pid>.aof在重新启动时仍然存在,并且占用了磁盘空间。

因为系统可以随时关闭,所以我冒着磁盘已满的风险。
在我看来,这个问题的唯一解决方案是创建一个脚本,temp-rewriteaof-*.aof从数据 Redis 文件夹中删除所有文件。

问题

有人知道更好的解决方案吗?Redis 有一个干净的程序/命令来解决这个问题吗?

redis
  • 1 个回答
  • 21 Views
Martin Hope
frankfalse
Asked: 2022-10-06 13:44:50 +0800 CST

如何在基于 yocto 的 Linux 发行版上安装 NTP 客户端?

  • 1

我正在通过zeus yocto 发行版开发基于 yocto 的 Linux 发行版。我需要在分发中添加一个 NTP 客户端,但我不需要在映像中安装 NTP 服务器。

我找到了秘诀:
meta-openembedded/meta-networking/recipes-support /ntp/ntp_4.2.8p15.bb
这与网络时间协议 (NTP) 相关。

该配方包含以下有关它的信息:

摘要 = “网络时间协议守护程序和实用程序”
描述 = “网络时间协议 (NTP) 用于将计算机客户端或服务器的时间同步到另一个服务器或参考时间源,例如无线电或卫星接收器或调制解调器。 "

前面的信息没有解释配方是否安装了 NTP 服务器或 NTP 客户端或两者。

我需要的是一个 NTP 客户端应用程序,它能够连接到可配置的 NTP 服务器并获取当前日期和时间。

以下指令:

IMAGE_INSTALL += "ntp"

不适合,因为将调用的 NTP 服务器添加到 yocto 映像中ntpd。

我必须添加到图像中以包含客户端 NTP 的包是什么?是包含在以前的食谱中还是我必须找到不同的食谱?

谢谢

ntp yocto
  • 1 个回答
  • 35 Views
Martin Hope
frankfalse
Asked: 2022-10-05 22:52:25 +0800 CST

我只能安装什么 LDAP 服务器来测试 LDAP 身份验证?

  • 1

我需要练习LDAP,所以我认为安装 LDAP 服务器只是为了做一些测试是个好主意。

对于客户端,我使用的是 LInux Mint 发行版,并且我已经安装了在此链接中找到的所有软件包。在我的公司中可以使用 Active Directory 服务,但显然我的用户没有以下命令所需的管理员权限:

sudo realm join domain.tld -U domain_administrator --verbose

所以我想安装一个 LDAP 服务器来做测试。

有人知道适合我用途的 LDAP 服务器吗?

谢谢。


在这个链接上,我找到了在 Linux Mint 上安装 OpenLDAP Server 和 OpenLDAP Client 的教程。

与往常一样,可以通过以下方式安装 OpenLDAP 服务器apt:

sudo apt update
sudo apt -y install slapd ldap-utils 

之后,必须配置服务器,并且链接提供了一些详细信息。显然这篇文章只是一个介绍,但足以开始学习 LDAP 服务器。

ldap openldap
  • 1 个回答
  • 58 Views
Martin Hope
frankfalse
Asked: 2022-10-05 02:22:40 +0800 CST

Linux 工作站如何与 Windows Active Directory 交互?

  • 3

我正在研究LDAP,在我的公司里有一个 Active Directory 服务器。在我的工作站上安装了 Linux Mint。

我试图展示出现我的问题的背景:

  • 打开一个新窗口来浏览工作站的文件系统;
  • File在打开的窗口的菜单中(很抱歉,此时我无法添加打开的窗口的图像),有选项Connect to Server;
  • 通过此选项,我可以选择Type: Windows share并使用在 Windows 域中注册的帐户进行身份验证;
  • 之后,我可以浏览一些启用了我的帐户的网络目录。

解释了上下文我可以问这个问题:Connect to Server我使用过 LDAP 还是其他东西?是否可以通过命令行进行相同的身份验证?

谢谢

linux-mint ldap
  • 1 个回答
  • 46 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve