Unix & Linux

Linux、FreeBSDおよび他のUn * xのようなオペレーティングシステムのユーザーのためのQ&A

4
シグナルは無視できますか(失われますか)?
シグナルを介してワーカーと通信するアプリケーションがあります(特定のSIGUSR1 / SIGUSR2 / SIGSTOP)。 すべての信号がハンドラーによって配信および処理されることを信頼できますか? アプリケーションが信号を処理することができないよりも速く信号が送信された場合はどうなりますか(たとえば、現在のホストの負荷が高いため)。
9 linux  signals 

2
ユーザーが実行したいコマンドを実行する前に別のコマンドを実行します
lsツールの元の動作を次のように変更したいとします。 $ ls Hello World file1 file2 ... これどうやってするの? 実行しているときls、私は別のコマンドレットの発言権を実行したいと思いますecho "Hello World!"。 私が目にする簡単な解決策は、エイリアスを使用することです: alias orig_ls="ls" alias ls='echo "Hello World!"' ただし、実行orig_lsすると出力されるため、これは実際のソリューションではありません"Hello World!"。

2
sed:単一行の入力で失敗することなく、ファイル全体をパターンスペースに読み込みます
ファイル全体をパターンスペースに読み込むことは、改行を置き換える場合に便利です&c。そして、次のことを助言する多くのインスタンスがあります: sed ':a;N;$!ba; [commands...]' ただし、入力に1行しか含まれていない場合は失敗します。 例として、2行入力の場合、すべての行が置換コマンドの影響を受けます。 $ echo $'abc\ncat' | sed ':a;N;$!ba; s/a/xxx/g' xxxbc cxxxt ただし、1行入力の場合、置換は実行されません。 $ echo 'abc' | sed ':a;N;$!ba; s/a/xxx/g' abc sed一度にすべての入力を読み取るコマンドを記述して、この問題を回避するにはどうすればよいですか?
9 sed  newlines 

1
autofsがsystemdで起動した後にサービスを開始するように設定する方法
systemdを使用してRHEL7マシンにライセンスサーバーを設定する必要があります。ライセンスサーバーは起動時に起動し、ネットワーク上の共有ディスクからライセンスファイルをロードする必要があります。したがって、ネットワークが開始し、autofsがNFSディスクのマウントを完了するのを待つ必要があります。私はこのサービスファイルを持っています: [Unit] Description=Flexnet license server Wants=network.target network-online.target autofs.service After=network.target network-online.target autofs.service [Service] Type=forking User=licenseuser Group=devusers ExecStart=/soft/flexera/glnxa64/lmgrd -c /soft/licenses/license.dat -L /home/licenseuser/license.log # Give a reasonable amount of time for the server to start up/shut down TimeoutSec=300 [Install] WantedBy=multi-user.target サービスは、autofsの開始後、autofsがすべてのディスクをマウントする前に開始されるため、ライセンスサーバーを開始できません。
9 rhel  systemd 

8
sedコマンドを使用してLinuxの各行の最後の単語を出力できますか?
以下の行で構成されるファイルがある場合、 12345 567 7878 66 er3 t45t y6y46y 4年6年656年5年 46年6年65年7年66年 yy46y6y 出力は次のようになります。 66 y6y46y y5y y66uyuyy y46y6y コマンドsed 's/.* //g'ファイル名と他のいくつかのsedコマンドを試しましたが、機能しません。 正確なsedコマンドは何ですか?

4
ファイルを使用してapt-getでパッケージをインストールする
brewfiles、caskfiles、dockerfiles、package.jsonなどのパッケージファイルを使用して、新しいマシンにパッケージをインストールすると非常に便利です。 apt-getの代替手段はありますか? コマンドラインで使用するだけなので、 apt-get install pkg1 pkg2 pkg3… ?
9 apt 

1
右矢印キーが押されたことを検出するbashscript
キーコードが右矢印キーでない場合でも、これが常にtrueとして検出されるのはなぜですか? stty_state=`stty -g` stty raw; stty -echo keycode=`dd bs=1 count=1 2>/dev/null` stty "$stty_state" echo $keycode if [ "$keycode"=39 ]; then echo "Right Arrow Key Pressed!" fi

2
生成された子プロセスが失敗した場合は、すべてを終了して終了します
私のスクリプトでは、データセットをinput_aa、input_abなどに分割しています。次に、同じPythonスクリプトをそれぞれ実行します。 # Execute program on each split file for part in input_*; do python3 $part & done wait 私の質問は2つあります。Pythonプロセスが失敗したことをどのように検出しますか。検出された場合、生成されたすべての子を強制終了し、失敗してスクリプトを終了するにはどうすればよいですか。
9 bash  shell  python 

1
「git reset file」と「git reset HEAD file」の違いは何ですか?
これらの両方がファイルのステージングを解除できることがわかりました。 git reset file以前はファイルのステージを解除するために使用していました。 しかし、今日私がhttp://git-scm.com/bookを読んだとき。 それは使用することを教えてくれたI見つけgit reset HEAD file、HEADはここで何をするのでしょうか?どのような状況で必須ですか? PS:追加の質問git checkout fileです。ファイルを変更しないで使用できます。その間、この本は私に使うことを勧めますgit checkout -- file。ここの違いは何ですか?
9 git 

2
btrfsはバックアップファイルシステムとして適していますか?
現在、ext4の上にかなり伝統的なバックアップファイルシステム構造があります。バックアップがbackup-DATE作成されるたびに、ファイルがrsyncされる新しいフォルダーが作成されます(rsyncの--link-destオプションを使用してハードリンクが作成されます)。 bitrotについて読んだので、すべてのファイルのチェックサムを透過的にしたいと思います。どうやらext4はそれができないようですが、btrfsはデータチェックサム(さらには組み込みのRAID1モード)のサポートを提供します。まず、btrfsRAID、サブボリュームスナップショット、送受信などの高度な機能を使用せずにデータチェックサムをサポートする「ダム」ファイルシステムとして使用したいと思います。 しかし、彼らのウィキは、バックアップの目的でファイルシステムへの信頼を実際に刺激するものではありません。 「多くの人が信頼してそれを使用していますが、まだ問題が発見されています。データのバックアップを保持してテストし、それらを使用する準備をする必要があります。」- はじめに 「btrfsは安定していますか?長い答え:[..]何をする場合でも、テスト済みの適切なシステム外(およびサイト外)のバックアップを保持することをお勧めします。」- よくある質問。 私の使用例は、オフラインバックアップを使用することです。そのため、ディスクはほとんど使用されず(時間単位など)、頻繁にプラグ/アンプラグされます(eSATAまたはUSB 3.0)。信頼できるファイルシステムを持つことは必須です。ext4 wrtよりも悪くなってはいけません。停電、汚れたシャットダウンなど バックアップのためにファイルシステムとしてbtrfsを使用することが実際に推奨されますか?btrfsの適切性を低下(または向上)させる可能性のある他のプロパティはありますか?

1
ksh93はとても高速ですか?
そのため、一般的に、私はsedテキスト処理、特に大きなファイルを探す傾向があり、通常はシェル自体でそのようなことを行うのを避けます。 しかし、それは変わるかもしれないと思います。私はあちこち見ていてman ksh、これに気づきました: <#pattern Seeks forward to the beginning of the next line containing pattern. <##pattern The same as <# except that the por‐ tion of the file that is skipped is copied to standard output. 実世界の有用性に懐疑的だったので、試してみることにしました。やった: seq -s'foo bar ' 1000000 >file ...次のような100万行のデータの場合: 1foo bar ... 999999foo bar 1000000 …


2
条件付きで「時間」を通じてサブシェルを渡すにはどうすればよいですか?
Vagrantボックスのセットアップスクリプトがあります。これは、でシングルステップを測定するために使用していましたtime。次に、時間測定を条件付きで有効または無効にしたいと思います。 たとえば、以前の行は次のようになります。 time (apt-get update > /tmp/last.log 2>&1) 今、私は単にこのようなことをすることができると思いました: MEASURE_TIME=true [[ $MEASURE_TIME = true ]] && TIME="time --format=%e" || TIME="" $TIME (apt-get update > /tmp/last.log 2>&1) しかし、これはうまくいきません: syntax error near unexpected token `apt-get' `$TIME (apt-get update > /tmp/last.log 2>&1)' ここの問題は何ですか?
9 bash  shell  quoting  time 

1
apt.VersionCompareを使用すると、「ValueError:_system not initialize」
新しいバージョンをダウンロードするかどうかを決定するために2つのバージョン文字列を比較する必要があるbashスクリプトを作成しました。テストは、Pythonのスクリプトを使用して行われます。apt.VersionCompare()このスクリプトは、バージョン比較を行いますapt。 #!/usr/bin/env python import sys, apt res = apt.VersionCompare(sys.argv[1], sys.argv[2]) if res < 0: sys.exit(-1) if res > 0: sys.exit(1) sys.exit(0) Ubuntu 14.4にアップグレードすると、これは機能しなくなりました。 次のように/programming/4957514/に従ってスクリプトを変更しようとしました: #!/usr/bin/env python import sys, apt_pkg res = apt_pkg.version_compare(sys.argv[1], sys.argv[2]) if res < 0: sys.exit(-1) if res > 0: sys.exit(1) sys.exit(0) しかし、これは私に与えます ValueError: _system not initialized。解決する方法、またはそうするようにバージョンを比較するより良い方法はありaptますか?
9 apt  python 

1
ネットワークデーモンを再起動できません
と入力するとsudo service networking restart、次のようなエラーが発生します。 edward@computer:~$ sudo service networking restart stop: Job failed while stopping start: Job is already running: networking networkingMacアドレスを変更した後、および/etc/network/interfacesファイルに静的IPを設定した後に再起動したいときに、このエラーが発生しました。 これらの変更を元に戻した後でも、コンピューターが正常に動作しているときにも、同じエラーが発生します。 調べている/var/log/syslogと私はこれを見つけました: kernel: [ 6448.036144] init: networking post-stop process (28701) terminated with status 100 それは失敗した停止/開始に関連していますか? 私はUbuntu 14.04を使用しています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.