Unix & Linux

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

7
`ls`コマンドからフォルダープレフィックスを削除することは可能ですか?
私はbashスクリプトを使用しており、すべてのファイルのリストを取得したい(すべてのjarファイルを言う)。コマンドを実行するls -1 lib/*.jarと、出力が得られます。 lib/mylib_1.jar lib/mylib_2.jar ... 次の出力を持つオプションはありますか? mylib_1.jar mylib_2.jar ... cd lib私はループ内にあり、ループ内で実行するアクションの親フォルダーにいる必要があるため、前に作成することはオプションではありません。 入力して情報を見つけようとしましたがman ls、解決策が見つかりませんでした。 別のコマンドを使用した解決策は、それを自分のlsコマンドにパイプできるか、自己完結型である限り有効です。
12 bash  shell  directory  ls 

5
シェルエイリアスを「スタック」するにはどうすればよいですか?
私の.profile(からのshエミュレーションモードでソースされた.zshrc)私は次のスニペットを持っています: if [ -f /usr/bin/pacmatic ]; then alias pacman=pacmatic fi # Colorized Pacman output alias pacman="pacman --color auto" ただし、2番目のエイリアスは常に最初のエイリアスをオーバーライドします。 % type pacman pacman is an alias for pacman --color auto 2番目のエイリアスの割り当てが最初の割り当てを「継承」し、/usr/bin/pacmatic存在する場合はエイリアスになるようにするにはどうすればよいpacmatic --color autoですか? 私はエイリアスの代わりに関数を使用することを嫌いではありませんが、ロジックがpacman呼び出されるたびに実行されなかった場合は、それを好むでしょう(毎回実行されるのではなくpacmatic、シェル起動時に一度チェックしたいpacman)。sh-portableスクリプトも好みますが、これが不可能な場合は、完全なzsh構文を使用できます。 (はい、これ--color autoはpacmaticエイリアスに追加することで簡単に解決できることを認識しています。しかし、Right Way™でそれを行いたいです。) グーグルやマンページを調べてみましたが、役に立ちませんでした。
12 zsh  alias 

3
バックグラウンドコマンドを待つシェルスクリプト
私はスクリプトを書いていますが、それを行う方法を見つけることができない何かが必要です... バックグラウンドでコマンド「command1&」を作成し、スクリプトのどこかでコマンドが終了するのを待ってからcommand2を実行する必要があります。基本的に、私はこれが必要です: 注:各コマンドは特定のディレクトリで実行されます!whileループの最後に、command1が4つのディレクトリを作成しました。それぞれが特定のプロセスを実行するため、実行中のプロセスの合計は4です。 a=1 while [$a -lt 4 ] . command1 #Generates 1 Process a= `export $a +1` done #Wait until the 4 process end and then run the command2 . command2 私はwaitpidプロセス番号を持つコマンドについて何かを見ましたが、それもうまくいきませんでした。

1
Linuxカーネルの25年間の開発は、素人の言葉で修飾または抽象化できますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 Linuxカーネルはほぼ25歳です。1991年(開始日)以降のLinuxカーネルの開発履歴、および1994年(1.0.0)から今日までの部分的な短いバージョンを作成する必要があった場合、私はできませんでした。カーネルリリースノートを1つ1つ読むのではなく、最善の方法は、バージョン3.11までのカーネルに追加された一般的なリリース機能である以下を提供することです(ノートとリンクは省略)。 Linuxカーネルのバージョン1.0は1994年3月14日にリリースされました。このリリースのLinuxカーネルは、シングルプロセッサのi386ベースのコンピューターシステムのみをサポートしていました。移植性が懸念されるようになったため、 バージョン1.2(1995年3月7日リリース)は、Alpha、SPARC、およびMIPSアーキテクチャに基づくプロセッサを使用するコンピュータシステムのサポートを獲得しました。 バージョン2.0は1996年6月9日にリリースされました。シリーズには41のリリースがありました。2.0の主な機能は、SMPサポート(つまり、単一システムでの複数のプロセッサのサポート)と、より多くの種類のプロセッサのサポートでした。 バージョン2.2(1999年1月26日リリース)は、グローバルスピンロックを削除し、改善されたSMPサポートを提供し、m68kおよびPowerPCアーキテクチャと新しいファイルシステム(MicrosoftのNTFSの読み取り専用サポートを含む)のサポートを追加しました。 2001年1月4日にリリースされたバージョン2.4.0には、ISAプラグアンドプレイ、USB、およびPCカードのサポートが含まれていました。また、Hewlett-PackardのPA-RISCプロセッサのサポートも含まれていました。2.4.xの開発では、シリーズの期間を通じて、Bluetooth、Logical Volume Manager(LVM)バージョン1、RAIDサポート、InterMezzo、ext3ファイルシステムのサポートなど、より多くの機能が利用できるようになりました。 バージョン2.6.0は2003年12月18日にリリースされました。2.6.xの開発は、シリーズの全期間を通じて新しい機能を含めるようにさらに変更されました。2.6シリーズで行われた変更には、メインラインカーネルソースへのµClinuxの統合、PAEサポート、CPUのいくつかの新しいラインのサポート、メインラインカーネルソースへのALSAの統合、最大2 32ユーザー(最大2 16)、最大2 29プロセスIDのサポート(64ビットのみ、32ビットアーチはまだ2 15に制限されています))、デバイスタイプの数と各タイプのデバイスの数を大幅に増やし、64ビットサポートを改善し、最大16テラバイトのファイルサイズをサポートするファイルシステムのサポート、カーネル内プリエンプション、ネイティブPOSIXスレッドライブラリのサポート(NPTL)、メインラインカーネルソースへのユーザーモードLinux統合、メインラインカーネルソースへのSELinux統合、InfiniBandサポートなどがあります。また、注目すべきは、FUSE、JFS、XFS、ext4など、2.6.xリリース全体でいくつかのファイルシステムが追加されていることです。2.6カーネルシリーズの歴史の詳細は、kernel.orgの2.6カーネルシリーズソースコードリリースエリアのChangeLogファイルに記載されています。 バージョン3.0は2011年7月22日にリリースされました。トーバルズは、大きな変化は「何もありません。絶対に何もない」と発表しました。2011年5月30日、トーバルズは次のように発表しました。「...次のリリースは、まったく新しい光沢のある数字ではなく、優れたカーネルでもあることを確認しましょう。」予想される6〜7週間の開発プロセスの後、Linuxの20周年の近くにリリースされます。 2012年12月、Torvaldsはi386プロセッサのサポートを削除することでカーネルの複雑さを軽減することを決定し、3.7カーネルシリーズ は元のプロセッサを引き続きサポートする最後のシリーズになりました。同じシリーズは、ARMプロセッサのサポートを統合しました。 2013年9月2日にリリースされたバージョン3.11は、一時ファイルの脆弱性を減らすためのopen(2)の新しいO_TMPFILEフラグ、実験的なAMD Radeon動的電力管理、低遅延ネットワークポーリング、zswap(圧縮スワップキャッシュ)などの多くの新機能を追加します。 また、長年にわたってLinux Foundationがカーネル開発について報告していることも付け加えることができます。2012-2013カーネル開発のハイライトは次のとおりです。 536の企業(私たちが知っている)を代表する3,738人の開発者からほぼ92,000の変更セットがマージされました。 重要な新機能の膨大な配列がメインラインにマージされました。これらには、完全なティックレス操作、ユーザー名前空間、ARMのKVMおよびXen仮想化、スケジューラーでのエンティティごとの負荷追跡、ユーザー空間チェックポイント/再起動、64ビットARMアーキテクチャサポート、F2FSフラッシュ指向ファイルシステム、多くのネットワーク改善が含まれますレイテンシとバッファの膨張の問題では、ブロックストレージデバイスの高速キャッシングを提供する2つの独立したサブシステムなどがあります。 Android固有のカーネル機能をめぐる長年の争いは、完全に背景に消えていきました。よく議論されている「ウェイクロック」機能は、最新のAndroidデバイスで使用されている別のメインラインソリューションに静かに置き換えられました。 この期間中、開発カーネルのバグを見つけるための自動化ツールの使用が大幅に増加しました。「トリニティ」ファズテスターやゼロデイビルドブートシステムなどのツールは、リリース前のカーネルで多数のバグを検出し、開発サイクルを短縮し、コミュニティがより高品質のリリースを提供できるようにします。 モバイルおよび組み込み業界からの貢献は増え続けています。たとえば、Linaro、Samsung、およびTIは、このペーパーの以前のバージョンの変更の4.4%を共同で提供しました。3.10までの期間、それらはすべての変更のほぼ11%に貢献しました。 カーネルプロジェクトは初めて女性向けのアウトリーチプログラムに参加し、7つの職種に41のアプリケーションを提供しました。アプリケーションプロセス中に、374個のパッチがカーネルに送信され、それらのパッチの1/3以上が3.10カーネルリリースで受け入れられました。インターンプロセスは現在進行中ですが、その結果は、将来のカーネルリリースまで表示されません。 さらに、個々のコミットを超えるメトリックがあるため、カーネルに何が起こっているのかを定量化することはそれほど難しくありません。たとえば、1994年の1.0.0カーネルには176 250行のコードがありました。そして、3.10のような現代のカーネルには15 803 499行のコードがあります。かなりもっと。カーネルのリリース頻度が増加し(3.10の場合は63日間)、変更率も増加しました(私たちが話すように1時間あたり9コミット以上)。Linux Foundationを引用するには: この変化率を何年も維持する能力は、以前のパブリックソフトウェアプロジェクトでは前例のないものです。 しかし、これはすべて私の意見ではほとんど洞察をもたらしません。したがって、私は尋ねます: この四半世紀の進化は、 このカーネルを構成するすべてのリストされた機能を時間の経過とともに線形的に追加することを超えて、簡単に修飾できますか? そして、これは、Linuxカーネルが何であるか、またはそれがどこに向かっているのかについての洞察をもたらしますか?25年の開発の後、それについていくつかの結論を確かに引き出すことができますか? すべてを言うことなく、すべてを言う素人の言葉で抽象的な答えを探しています。
12 kernel  history 

1
JAVA_HOMEとupdate-alternativesの違いは何ですか?
私は、FedoraボックスのデフォルトJavaとしてOpenJDK Javaランタイムを実行し、Android開発、つまりAndroidバンドルからAndroid SDKマネージャー、Android Studio、Eclipseを実行するためにOracle JDK 6を使用する最良の方法を見つけようとしています。 OpenJDK JavaランタイムをFedoraリポジトリからインストールしました。Fedoraリポジトリには、次のようなセットアップの選択肢があります。 [donnie@fedora ~]$ alternatives --list | grep java jre_openjdk auto /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre jre_1.7.0 auto /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre java auto /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java libjavaplugin.so.x86_64 auto /usr/lib64/IcedTeaPlugin.so Oracleが提供するrpmを使用してOracle JDK 6をインストールしました。 Android BundleとStudioでJAVA_HOMEを使用して、Oracle JDKで実行するには、次のように貼り付けます.bashrc。 export JAVA_HOME=/usr/java/jdk1.6.0_45/ export PATH=$JAVA_HOME/bin:$PATH ChromeはまだOpenJDKを使用していることに気付きました(まだプラグインをリンクする必要があるため)。 JAVA_HOMEと代替手段の使用の違いは何ですか?

4
「そのようなユーザーはいません」が、ユーザーはpasswdファイルにあります
/ etc /内のファイルを見る: /etc/group:lbutler:*:1005: /etc/master.passwd:lbutler:$6$s..../:1005:1005::0:0:L Butler:/home/lbutler:/bin/bash /etc/passwd:lbutler:*:1005:1005:L Butler:/home/lbutler:/bin/bash だが: $ passwd lbutler passwd: lbutler: no such user また、ファイルは/home/lbutler/uid 1005およびgidとして表示されますlbutler の他のユーザーに/etc/passwdは問題がないようです
12 freebsd  passwd 

4
日付の接頭辞付きファイルへの自動DBバックアップ用のcronjob
最新のLinux Mintを使用しています。データベースのバックアップ用に特別なcronジョブを作成できるかどうか疑問に思っていました。 私の/etc/cronjobファイルには次のコードがあります: # Minute Hour Day of Month Month Day of Week Command # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) 30 4 * * 1-6 /home/users/backup.sh 私/home/users/backup.shには mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql 代わりに、full_myDB.sql私2014-04-04_full_myDB.sqlたちが持っている日付に応じて、日付が動的に追加されるようなものを持ちたいです。 SQLバックアップファイルが1週間以上古い場合、cronjob で自動的に削除したいと思います。
12 cron  backup  mysql  database 


4
grepを使用して()の前の文字を抽出します
文字 '('の前の文字を抽出する必要があります。ファイル構造は次のとおりです。 バラ(いい) デイジー() リリー(悪い)罰金 ひまわり() 次の形式の出力ファイルが必要です。 rose daisy lilly sunflower 誰でもこのコマンドを伝えることができます..... awk、grep、またはsedが望ましい...
12 sed  awk  grep 

3
仮想インターフェイス上のトラフィックをどのようにキャプチャしますか?
デバッグのために、Linux仮想インターフェイスでトラフィックをキャプチャしたいと思います。veth、tunおよびdummyインターフェイスの種類を試しています。3つすべてで、tcpdump何かを表示するのに苦労しています。 ダミーインターフェイスの設定方法は次のとおりです。 ip link add dummy10 type dummy ip addr add 99.99.99.1 dev dummy10 ip link set dummy10 up 1つの端末で、次のように監視しtcpdumpます。 tcpdump -i dummy10 すぐに、次の方法で試聴しますnc。 nc -l 99.99.99.1 2048 3番目では、次を使用してHTTP要求を作成しますcurl。 curl http://99.99.99.1:2048/ ターミナル2ではcurlリクエストからのデータを見ることができますが、からは何も表示されませんtcpdump。 A TUN / TAPチュートリアル明確化カーネルは実際には1つのローカルインターフェイス上で動作しているすべてのパケットを送信しないことがあり、いくつかの状況: tsharkの出力を見ると、何もありません。インターフェイスを通過するトラフィックはありません。これは正しいです。インターフェイスのIPアドレスにpingを送信しているため、オペレーティングシステムはパケットを「有線」で送信する必要がないと正しく判断し、カーネル自体がこれらのpingに応答しています。考えてみると、別のインターフェイスのIPアドレス(たとえばeth0)にpingを実行した場合に発生することです。パケットは送信されません。これは明白に聞こえるかもしれませんが、最初は混乱の原因になる可能性があります(私にとっては)。 ただし、これがTCPデータパケットにどのように適用されるかを確認するのは困難です。 たぶん、tcpdump別の方法インタフェースにバインドする必要がありますか?
12 networking  kernel  ip  tcp  tcpdump 

5
パイプへの書き込みを中断せずにファイルを空にする
出力がログファイルにリダイレクトされるプログラムがあります。 ./my_app > log 時々ログをクリア(空)にして(オンデマンドで)、次のようなさまざまなことを試したいと思います。 cat "" > log ただし、元のパイプは中断され、プログラムは出力をログファイルにリダイレクトしなくなります。 それを行う方法はありますか? 更新 出力を生成するアプリケーションを変更できないことに注意してください。それは標準出力に吐き出され、ログに保存して、必要なときに検査し、必要なときにクリアできるようにします。ただし、アプリケーションを再起動する必要はありません。

7
特定の長さを超えるファイル内の行を識別する方法
コード内で特定の長さを超える行を見つけたいのですが。私のコードは複数のファイルにあります。これを行う良い方法は何ですか? ファイルと行番号を知りたい。コンテンツが優先されますが、必須ではありません。演習の目的は、(おそらく手動で)行を分割する方法を理解することです。


1
cp / rsyncを使用した拡張属性の保持
を使用してコピーする場合cp、明示的な場合でも拡張属性は保持されません cp -a --preserve=all /source /dest または cp -a --preserve=xattr /source /dest 同じことはrsync、つまり rsync -aq -A -X --delete /source /dest ただし、宛先ファイルシステムでは、(を使用してchattr)拡張属性を手動で作成できます。これは、ターゲットファイルシステムがxattrをサポートすることを意味します。 なぜ私は保存することができませんxattrでcpかrsync? 追加情報: ソースとターゲットの両方のファイルシステムはext4です ソースとターゲットの両方のファイルシステムはローカルです(nfsではありません) Debian Wheezyを使用しています
12 filesystems  rsync  cp  xattr 

1
一部のシェルで「nohupコマンド>&/ dev / null」が「機能する」ように見えるのはなぜですか?
私はUbuntuに尋ねて、以下を提案していた答えを編集しました nohup gedit >& /dev/null & 彼らが実際に意味したとき nohup gedit &> /dev/null & 後者は、stderrとstdoutの両方をに正しくリダイレ​​クトし/dev/nullます。前者は、というファイルを作成する&か、他の場合と同じようにエラーを出す可能性が高いと予想していました。 $ echo "foo" >& bash: syntax error near unexpected token `newline' 代わりに、前者とまったく同じように機能するようで、geditウィンドウが表示され、エラーメッセージは出力されません。 また、これはシェル固有であることに注意する必要があります。 bash(4.2.45(1)-release)、zsh(5.0.2)、csh(deb package version:20110502-2)およびtcsh(6.18.01):上記のように機能し、エラーメッセージもファイルも作成されません。 dash (0.5.7-3): $ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd number ksh(93u + 2012-08-01):失敗しますが、ウィンドウは表示され1223ませんが、プロセスは明らかに開始されます()gedit: $ nohup …

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