最新記事

同じプレフィックスを共有するバッチの名前変更ファイル
bash
files
deduplication

同じプレフィックスを共有するバッチの名前変更ファイル

サーバーに重複エントリを削除するプレフィックスを含むファイルのリストがあります。これらはまったく異なるmakefileです。 生成されたファイルのようです。 {Title} - {yyyy-MM-dd}_{random} - {Description}.ts たとえば、 Camera Recording - 2023-08-11_14 - Front Deck.ts Camera Recording - 2023-08-11_14 - Back Deck.ts Camera Recording - 2023-08-16_27 - Front Deck.ts Camera Recording - 2023-08-16_36 - Front Deck.ts Camera Recording - 2023-08-17_56 - Front Deck.ts 次のファイル名の重複プレフィックスを識別するスクリプトを実行できる必要があります。次に、日付の後にある数字のプレフィックス{random}部分を変更します。 Camera Recording - 2023-08-11_14 - Front Deck.ts Camera Recording - 2023-08-11_14 - Back Deck.ts 次のようになるには、{random}を別の値(14を除く)に置き換える必要があります。 Camera Recording - 2023-08-11_14 - Front Deck.ts Camera Recording - 2023-08-11_68 - Back Deck.ts Linuxシェルスクリプトを使用してこれを達成する方法に関する提案はありますか?

Admin

ディレクトリ構造をコピーし、ターゲットのサブディレクトリの名前を変更する方法
shell
files
cp

ディレクトリ構造をコピーし、ターゲットのサブディレクトリの名前を変更する方法

このディレクトリ構造を考慮すると $ lsd --tree . └── / defs ├── / bar │ └── / v1 │ └── bar.txt └── / foo └── / v1 └── foo.txt この構造を生成するには、単純なコマンド/スクリプトが必要です。実際の構造にはより多くのディレクトリがあります。 $ lsd --tree . └── / defs ├── / bar │ ├── / v1 │ │ └── bar.txt │ └── / v2 │ └── bar.txt └── / foo ├── / v1 │ └── foo.txt └── / v2 └── foo.txt ターゲットをコピーして名前を変更します。

Admin

lsとlsattrのファイル権限
files
permissions

lsとlsattrのファイル権限

lsファイル権限はlsattr次のとおりです。 debian@debian:~$ ls -al /usr/bin/ls -rwxr-xr-x 1 root root 147176 Sep 24 2020 /usr/bin/ls debian@debian:~$ ls -al /usr/bin/lsattr -rwxr-xr-x 1 root root 14496 Jun 7 2021 /usr/bin/lsattr lsattrがファイルのフラグを読み取れないのはなぜですか/etc/shadow? debian@debian:~$ ls -al /etc/shadow -rw-r----- 1 root shadow 1494 Jul 13 17:46 /etc/shadow debian@debian:~$ lsattr -al /etc/shadow lsattr: Permission denied While reading flags on /etc/shadow

Admin

ファイルロックは、ファイルアクセサが選択するのではなく、オペレーティングシステム/ファイルシステムによって実行されますか?
files
filesystems
freebsd
zfs
lock

ファイルロックは、ファイルアクセサが選択するのではなく、オペレーティングシステム/ファイルシステムによって実行されますか?

オペレーティングシステム(特にFreeBSD)またはファイルシステム(特にZFS)でそのファイルが実行されたときに特定のファイルへのすべてのアクセス(または少なくともルートではなくすべてのアクセス)が発生するように強制する方法はありますか?ロックされた?同様の状況とは異なりlockf、ファイルにアクセスしようとしているプロセスは、ファイルが存在しない場合にのみそのファイルにアクセスできます。すでにロックされ、オプションでファイルをロックしますか? たぶん、chmod旗に似たものがありますか?

Admin

cpでアップデートを使用してコピープロセス/ジョブを保存する
files
synchronization

cpでアップデートを使用してコピープロセス/ジョブを保存する

cp -u実際にファイルの保存/コピーが機能するように更新する方法 /tmp/onram/cppGainRun.shにコピーして修正しました。 $ ls -l drwxrwxrwx 2 root root 80 Oct 7 07:02 /tmp/onram/cpp total 8 -rwxrwxrwx 1 root root 116 Oct 7 07:02 gainRun.sh -rwxrwxrwx 1 root root 175 Oct 7 07:01 m.c optでコピーする前にソースコードを確認してください-u。 $ ls -l ~/Downloads/c drwxrwxrwx 2 root root 4096 Oct 6 09:28 /home/bot/Downloads/c total 8 -rwxrwxrwx 1 root root 108 Oct 6 09:11 gainRun.sh -rwxrwxrwx 1 root root 175 Oct 6 09:11 m.c これでテストして複製する時間です。 $ cp -ru /tmp/onram/cpp/* ~/Downloads/c '/tmp/opera-beta/cpp/gainRun.sh' -> '/home/bot/Downloads/c/gainRun.sh' '/tmp/onram/cpp/m.c' -> '/home/bot/Downloads/c/m.c' 編集するのではなく、無差別にコピーしてください。gainRun.sh そうでない場合は、ファイルを保存/コピーする正しい手順を助けてください。

Admin

「com1」から「com9」までのファイルまたはディレクトリを作成できません。
files
filesystems
filenames
wine

「com1」から「com9」までのファイルまたはディレクトリを作成できません。

'com1', 'com2', ..., 'com9'拡張ハードドライブに名前が付けられたフォルダやファイルを作成できません。ゲームが保存されている別のドライブにWineプレフィックスを作成しようとするとエラーが発生します。 winecfg以下は、新しいプレフィックスを実行したときの出力全体のペーストビンです。https://pastebin.com/SsaAFGdw ディレクトリとファイルを作成できるので、権限の問題ではないと思います。また、プライマリブートドライブからプレフィックスを作成し、拡張ハードドライブに移動し、次に'com1', 'com2', ..., 'com9'。 ドライブパーティションを拡張する方法は次のとおりです。 sudo WINEPREFIX='path' winecfg動作しません。同じ結果です。 エディター: オペレーティング・システム: Manjaro KDE Plasma 出力mount | grep /dev/sdb: /dev/sdb2 on /run/media/snich/Extended type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2) /dev/sdb4 on /run/media/snich/Games type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2) /dev/sdb3 on /run/media/snich/Personal type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

Admin

ファイルの切り捨てを防ぐために、/dev/stdoutを介した出力リダイレクト
linux
files
io-redirection

ファイルの切り捨てを防ぐために、/dev/stdoutを介した出力リダイレクト

実行して出力をファイルに収集したいプログラムがあります。ただし、プログラムを実行すると、プログラムが開き/dev/stdout(たとえば/proc/self/fd/0)切り捨てられ、出力を蓄積するファイルからすべての内容が削除されます。 これは小さなシェルスクリプトで簡単に再現できます。 sh -c "echo 1; echo 2 > /dev/stdout ; echo 3" >> test.txt このコマンドの結果には、test.txtand 2(3この回答)。1、2およびを含めたいです3。 追加情報: 実行された手順は、本人が管理することはできません。これは問題がないことを知っていますが、>> /dev/stdout変更することはできません。 catこれを追加すると機能します... | cat >> test.txt。しかし、私は追加のプロセスオーバーヘッドのないソリューションを好みます(これはベンチマーク目的です)。 chattr +a test.txt解決策かもしれませんが、ルートが必要です。私はただの一般ユーザーです。 実際にはコンテナを使用してプログラムを実行し、出力リダイレクトはコンテナの外部で構成されます。したがって、コンテナの特定の構成を必要とするソリューションがある場合はこれが可能です。 もちろん、文章を書いたり/dev/stderr直接使用するための/proc/self/fd/{0,1}問題を単純化する一般的な解決策を探しています。 /proc/self/fd/0とにかく、リダイレクト、ファイル記述子、またはファイルを指しても切り捨てを防ぐ方法を設定する方法があることを願っています。

Admin

1つのディレクトリにある複数のファイルの名前を同時に変更する方法
shell
files
rename

1つのディレクトリにある複数のファイルの名前を同時に変更する方法

私のディレクトリには/var/tmp/abc4つのファイルがあります。 12345-ram-3e3r5-io9490-89adu9.csv 45434-dam-qwe35-to9490-43adu9.csv 11234-cam-yy3r5-ro9490-85adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv すべてのCSVファイルの名前を最も短い方法(おそらく1行)に変更したい(すべてのファイルを見つけて名前を変更する)。 XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv

Admin

6桁の数字で始まり、リスト内の数字と一致するファイルを見つけます。
shell
files

6桁の数字で始まり、リスト内の数字と一致するファイルを見つけます。

私は約185,000個のファイルで構成された巨大なコレクションを持っています。 312095_ck_image-24-10-20-11-29-1.jpeg 312095_ck_image-24-10-20-11-29-2.jpeg 312095_ck_image-24-10-20-11-29.jpeg デフォルトでは、この6桁の数字はユーザーID(一部のバックエンドOracleデータベースによって提供されます)であり、 各ユーザーIDはディレクトリに複数回表示されることがあります。また、1行に6桁の数字(約18,000個)を含むテキストファイルもあります。ファイルディレクトリをテキストファイルの内容と一致させることは可能ですか?したがって、ファイルがテキストファイルの数字で始まる場合は、後でフォルダを削除できるように、ファイルを別のディレクトリ(残りの名前や拡張子に関係なく)に移動したいと思います。個々のファイルの代わりにフォルダ全体を削除できるように、フォルダに一致するすべてのファイルが必要です。これはLinuxで可能ですか(シェルまたはソースから別のLinuxプログラムをインストール/ビルドすることによって)。オペレーティングシステムのバージョンはRHEL Linux 6です。これが簡単になったら、ディレクトリ内のファイルのリストをデータベーステーブルにロードし、それをテキストファイルの数値のリストと一致させて、どのファイル名が削除/移動されるかを正確に知ることができます。ファイルを移動/削除できるように、そのリストをmvコマンドに供給する方法がわかりません。これを実装する最も簡単な方法は何ですか?したがって、私の物理フォルダがあり、/new_upload/entrants/参加者と同じレベルにジャンクという空のフォルダがあり、 /new upload/junk 実行しようとしているIDのリストに312095が表示される場合 mv 312095_* /new_upload/junk [idis] entrants# sh -h sh-4.1# [idis] entrants# $SHELL --version GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Admin

「開いたファイルが多すぎる」という混乱の中で
files
linux-kernel
ulimit
kernel-parameters

「開いたファイルが多すぎる」という混乱の中で

「ファイル制限」が混乱していて何をすべきかわかりません。 システムを再起動すると、しばらく役に立つと確信しています。しかし、誰かができますこの問題を診断するのに役立つツールを見つけるために正しい方向を教えてください。ここで問題の原因を見つけますか? 再起動せずに数週間システムを使用した後、いくつかの問題が発生し始めました。 システムが著しく遅くなり、 一部のプログラムは、明らかな理由なしに、またはログと競合します。たとえば、Weztermを実行している場合、Google Chromeは起動しません。 または Google Chrome が実行中です。これでWeztermを起動できません。 このようなことが数ヶ月間続いていますが、その原因が何なのか理解できません。 今回は、標準出力にエラーがないかどうかを確認するために、他の端末エミュレータでWeztermを実行してみることにしました。それをしました。明らかに開かれたファイル記述子の制限に達しました。 現在の制限を確認して再確認し、インターネットのランダムな提案に基づいて制限を増やしました。不運。 Weztermを起動するには、ファイル記述数が十分でない理由を理解できません。 状況をさらに混乱させるために、プロセスごとに現在開いているファイルの数を見てみました。 lsof | awk '{ print $1 " " $2; }' | sort -rn | uniq -c | sort -rn | head -15 [...] lsof: no pwd entry for UID 65535 lsof: no pwd entry for UID 65535 72450 plasmashe 610475 39294 krunner 623883 27808 telegram- 2383506 22572 chrome 2167881 21600 chrome 2167924 21344 slack 616893 20987 plasma-di 2394216 17050 kwin_x11 610405 12606 zeal 610569 8732 slack 616960 8692 1password 2364911 7766 konsole 2403669 7480 spectacle 1976672 7452 xdg-deskt 610370 4456 kded5 610402 最初の列は、プロセスのファイル記述子の数でなければなりません。プロセスがファイルを開く必要があるのはなぜですか?さらに:これは50kファイル記述子の制限と一致しない可能性があります。今はとても混乱しています。 面倒なこと: システム制御: sysctl --all | grep file-max sysctl: permission denied on key 'fs.protected_fifos' sysctl: permission denied on key 'fs.protected_hardlinks' sysctl: permission denied on key 'fs.protected_regular' sysctl: permission denied on key 'fs.protected_symlinks' fs.file-max = 9223372036854775807 sysctl: permission denied on key 'kernel.apparmor_display_secid_mode' sysctl: permission denied on key 'kernel.cad_pid' sysctl: permission denied on key 'kernel.unprivileged_userns_apparmor_policy' sysctl: permission denied on key 'kernel.usermodehelper.bset' sysctl: permission denied on key 'kernel.usermodehelper.inheritable' sysctl: permission denied on key 'net.core.bpf_jit_harden' sysctl: permission denied on key 'net.core.bpf_jit_kallsyms' sysctl: permission denied on key 'net.core.bpf_jit_limit' sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key' sysctl: permission denied on key 'net.ipv6.conf.all.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.br-77aecafe7c63.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.br-faf1bfa0fcca.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.default.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.docker0.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.enp2s0f1.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.lo.stable_secret' sysctl: permission denied on key 'net.ipv6.conf.wlp3s0.stable_secret' sysctl: permission denied on key 'vm.mmap_rnd_bits' sysctl: permission denied on key 'vm.mmap_rnd_compat_bits' sysctl: 'vm.stat_refresh' キーに対する権限が拒否されました。 カーネルバージョン: uname -a Linux eugene-pc 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux オペレーティングシステムのバージョン: lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy

Admin