[復刻版] LinuxのLinuxの学習の問題は、問題の概要概要を学びます

Linuxの学習問題の概要

この記事では主に自分自身の学習にlinuxで、いくつかの思考と要約記録

違い、環境変数と共通の変数

違いは、通常の変数は、子プロセスは親の環境変数を継承することができる唯一の現在のプロセスに影響を与えることがあります

二、rsyslogのとlogrotateのは、問題の記録を失うことはありません

私は結論をお話しましょう:いいえ

そこlogrotateのプログラムを作成し、copytruncate、ここでは、このデフォルトのスキームを作成検討しています。logrotateの手順についての講演:ログファイルがあるのdaemon.logと仮定すると、電流は回転時間に達した、logrotateのは、最初のdaemon.log.1としてのdaemon.log名前を変更し、その後、HUPを送信するために対応するプロセスに、新しいのdaemon.logを作成彼は、ログが更新された通知しました

プロセスは、この問題について考えてきたその時に、このプロセスは、ログデータが失われることはありません、ログファイルlogrotateのは、同じ名前の新しいファイルを作成し、名前の変更、ログを書くために、それはまだ、Linuxのファイルシステムの問題であり、深い理解を欠いています。

  1. 文書は、Linuxのinodeやデータノードに分割され、ファイルシステムのinodeは、ファイルはiノード識別子に対応するファイルを開くプロセスにおいて、この文書に署名することです。
  2. あなたは、ファイル名のLinuxはディレクトリ内に実際に存在する、Linuxのファイル名が存在しているかを理解する必要があり、ディレクトリはそれがLinuxのハードリンクを理解して、ファイル名とiノードとの対応を格納しているファイルは、もあり、同じファイルには、より多くを持つことができます名前

唯一の実際のファイルに影響を与えなかった、ディレクトリエントリを変更する際に名前を変更logrotateを、なぜ理解できないだろう上記理解し、そのプロセスまたは名前を変更したファイルには書き込まれるように、信号を処理するためのlogrotateを通知プロセスは、プロセスが新しいファイルを書き込むために、ファイル記述子を置き換え、新しいiノードのファイル名に基づいて、応答信号の機能を見つけるために

ここでは、この信号はデフォルトの動作を扱っていない、HUP信号に対応できるようにするには、あなたのプログラムに特別な注意を払わなければならないプロセスを停止することです。

第三に、なぜ一部のフォルダサイズは4096の倍数ではありません。

私たちは、dnodeが1つ以上あり、ファイルのみinodeを必要とする、ファイルシステムのファイルストレージは、iノード(インデックスブロック)とdnode(データブロック)を必要とすることを知っています。これは、ファイルのディレクトリですが、ビューディレクトリ内のファイルシステムの各dnodeのサイズが固定されている場合ので、時には通常、多くのディレクトリのサイズが4096本の倍数が良く、理解されているディレクトリブロックを取らないことがわかりました4Kは、一つ以上の4096での整数倍を占めます。では、なぜそれをブロックし、いくつかのディレクトリのサイズを取ることではありませんか?

これは、ディレクトリエントリが比較的小さい場合には、その後、彼はそれらのディレクトリinodeにデータを格納するので、私はブロックを占有しない、実際に最適化されたXFSです。

私は自分のコンピュータ上で使用するll -sルートディレクトリを表示するためには、(最初の列を参照してください)DEV、ビンを見ることができ、ホームデータブロックを取ることはありません。

   0 lrwxrwxrwx.   1 root root    7 3月  23 08:30 bin -> usr/bin
   4 dr-xr-xr-x.   5 root root 4096 4月   3 22:01 boot
   0 drwxr-xr-x.  19 root root 3300 4月   3 23:17 dev
  12 drwxr-xr-x. 144 root root 8192 4月   6 11:18 etc
   0 drwxr-xr-x.   5 root root   45 4月   3 23:06 home

コマンドlsとデュコマンドの下で問題のあるサプリメントのファイルサイズについて話して以来

デュビューファイルやディレクトリのサイズ

du -sh *

lsコマンドは、問題のファイルサイズを表示します

ls -s -S
-s 输出大小
-S 按大小排序
-r 逆序排序

四、リブートやシャットダウンなどの原則ソフトリンク

のは、中に次の再起動およびシャットダウンビューファイルを見てみましょう:

[chen@chen ~]$ ll `which reboot` `which shutdown`
lrwxrwxrwx. 1 root root 16 3月  30 22:12 /usr/sbin/reboot -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16 3月  30 22:12 /usr/sbin/shutdown -> ../bin/systemctl

私はこれらの2つのファイルはシンボリックリンクをsystemctlにリンクされて見ることができ、そしてここで私はそれを非常に奇妙な動作ができないのはなぜ同じsystemctlにリンクされて見つけますか?これらの二つのシンボリックリンクは同じ権利とは何ではないのですか?

しかしによって、シンボリックリンクの内容を表示するにはどのようにcat /usr/sbin/reboot、ソースに直接使用することができ、この時ファイルを表示するための時間は、このコマンドをreadlink次のように、シンボリックリンクの内容を読み取るために、このコマンドを:

[chen@chen ~]$ readlink `which reboot` `which shutdown`
../bin/systemctl
../bin/systemctl

私たちは、その後、最終的に達成する方法で、内容は同じである見ることができます。実際には、これは判断を行うために始めたときに名前を取得することです。あなたが理解する次のプログラムを見てください:

#include<stdio.h>

int main(int argc,char * argv[]){ for(int i=0;i<argc;i++) printf("%s\n",argv[i]); }

上記のプログラムは、プログラムの入力パラメータを印刷し、使用することは、gcc -std=c99 name.cファイルコンパイラa.outを生成し、a.outのにシンボリックリンクを作成しますln -s a.out b

[chen@chen ~]$ `pwd`/a.out
/home/chen/a.out
[chen@chen ~]$ ./a.out
./a.out
[chen@chen ~]$ ./b
./b

あなたはシンボリックリンクを作成する際には、別の名前を使用して、systemctlは、名前によって異なるロジックがかかることがあり、異なるプログラムの出力の名前を見ることができます。だから、あなたがリブート独自のディレクトリのリンクを構築する場合:ln -s /bin/systemctl reboot効果を達成することは同じです。

第五に、スクリプトの実行の問題は時間にsystemdを開始します

以前の私たちは、このように推奨されていませんrc.localに、systemdに参加します起動時に実行する必要がしているスクリプト内のSystemVのを初期化するとき、私は大きな理由は、並列実行の問題ためだと思います。このスクリプトは、時間のかかる作業の多くを持っている場合、スクリプトは順次開始するための一つ一つを実行することができます。だから、systemdに一つの大きな改善が並列に実行され、私たち自身のサービスプロファイルを用意することが推奨され、使用が管理するのにsystemd。

私の理解では、それが迅速かつ簡単なコマンドであるか、または元のinitディレクトリに配置することができれば、結局、より便利です

ランダムを実行するための六、crontabのスケジュールされたタスク

私はいくつかの点で実行されるタスクの多くを持っている場合は、タスクの思考を発行する計画は、大きな負荷の実装はので、いくつかの無作為化治療ではなく、同時にトリガを必要とする原因と同じ時間を避けるために、ありますが、

アイデアは、1時間でランダム化する、例えば、ランダム関数に参加することである:RANDOM使用環境変数$[(RANDOM%60]

cronの設定ファイル%をエスケープする必要があります忘れないでください:$[(RANDOM\%60]

次のように最終的な結果は以下のとおりです。 0 1 * * * sleep $[(RANDOM\%60]m ; /home/data/shell/script.sh

七つのログ出力と標準出力

Javaのログは一般的にlog4fjを使用して構成ログで、これをlogback。ここでJavaのログに彼らのビジネスについて話を、私たちは今、私たちは一般に、例えば、より多くのアペンダを持ち、標準出力に出力ファイルに出力A。我々はプログラムでIDEを実行すると、あなたがオンライン展開を行っている場合、コンソール内のすべての出力を標準出力には、例えば、nohup daemon & &>/dev/nullログファイルも装備されているので、この方法では、標準出力は、/ dev / nullにリダイレクトしますアペンダので問題ありませんが、あなたは、コードを持っている場合System.out.println、この出力は、情報が失われているだろう。だから、ログログ出力の使用を統一しようと、あなたはまた、プログラムの標準出力にもログに書き込まれるように構成することができます。

参考リンク

  1. なぜ、ディレクトリ・サイズです-異なる-で-LS-L-出力オンXFSファイルシステム
  2. 与えられた時間内でのcronジョブとランダムな時間、
この記事はあなたを助けることを望んで、ここに要約されます!
著者: 陳牙チー
この記事は、執筆者に属し、公園の合計をブログ、ソース転載を保持するために歓迎!

この記事では主に自分自身の学習にlinuxで、いくつかの思考と要約記録

違い、環境変数と共通の変数

違いは、通常の変数は、子プロセスは親の環境変数を継承することができる唯一の現在のプロセスに影響を与えることがあります

二、rsyslogのとlogrotateのは、問題の記録を失うことはありません

私は結論をお話しましょう:いいえ

そこlogrotateのプログラムを作成し、copytruncate、ここでは、このデフォルトのスキームを作成検討しています。logrotateの手順についての講演:ログファイルがあるのdaemon.logと仮定すると、電流は回転時間に達した、logrotateのは、最初のdaemon.log.1としてのdaemon.log名前を変更し、その後、HUPを送信するために対応するプロセスに、新しいのdaemon.logを作成彼は、ログが更新された通知しました

プロセスは、この問題について考えてきたその時に、このプロセスは、ログデータが失われることはありません、ログファイルlogrotateのは、同じ名前の新しいファイルを作成し、名前の変更、ログを書くために、それはまだ、Linuxのファイルシステムの問題であり、深い理解を欠いています。

  1. 文書は、Linuxのinodeやデータノードに分割され、ファイルシステムのinodeは、ファイルはiノード識別子に対応するファイルを開くプロセスにおいて、この文書に署名することです。
  2. あなたは、ファイル名のLinuxはディレクトリ内に実際に存在する、Linuxのファイル名が存在しているかを理解する必要があり、ディレクトリはそれがLinuxのハードリンクを理解して、ファイル名とiノードとの対応を格納しているファイルは、もあり、同じファイルには、より多くを持つことができます名前

唯一の実際のファイルに影響を与えなかった、ディレクトリエントリを変更する際に名前を変更logrotateを、なぜ理解できないだろう上記理解し、そのプロセスまたは名前を変更したファイルには書き込まれるように、信号を処理するためのlogrotateを通知プロセスは、プロセスが新しいファイルを書き込むために、ファイル記述子を置き換え、新しいiノードのファイル名に基づいて、応答信号の機能を見つけるために

ここでは、この信号はデフォルトの動作を扱っていない、HUP信号に対応できるようにするには、あなたのプログラムに特別な注意を払わなければならないプロセスを停止することです。

第三に、なぜ一部のフォルダサイズは4096の倍数ではありません。

私たちは、dnodeが1つ以上あり、ファイルのみinodeを必要とする、ファイルシステムのファイルストレージは、iノード(インデックスブロック)とdnode(データブロック)を必要とすることを知っています。これは、ファイルのディレクトリですが、ビューディレクトリ内のファイルシステムの各dnodeのサイズが固定されている場合ので、時には通常、多くのディレクトリのサイズが4096本の倍数が良く、理解されているディレクトリブロックを取らないことがわかりました4Kは、一つ以上の4096での整数倍を占めます。では、なぜそれをブロックし、いくつかのディレクトリのサイズを取ることではありませんか?

これは、ディレクトリエントリが比較的小さい場合には、その後、彼はそれらのディレクトリinodeにデータを格納するので、私はブロックを占有しない、実際に最適化されたXFSです。

私は自分のコンピュータ上で使用するll -sルートディレクトリを表示するためには、(最初の列を参照してください)DEV、ビンを見ることができ、ホームデータブロックを取ることはありません。

   0 lrwxrwxrwx.   1 root root    7 3月  23 08:30 bin -> usr/bin
   4 dr-xr-xr-x.   5 root root 4096 4月   3 22:01 boot
   0 drwxr-xr-x.  19 root root 3300 4月   3 23:17 dev
  12 drwxr-xr-x. 144 root root 8192 4月   6 11:18 etc
   0 drwxr-xr-x.   5 root root   45 4月   3 23:06 home

コマンドlsとデュコマンドの下で問題のあるサプリメントのファイルサイズについて話して以来

デュビューファイルやディレクトリのサイズ

du -sh *

lsコマンドは、問題のファイルサイズを表示します

ls -s -S
-s 输出大小
-S 按大小排序
-r 逆序排序

四、リブートやシャットダウンなどの原則ソフトリンク

のは、中に次の再起動およびシャットダウンビューファイルを見てみましょう:

[chen@chen ~]$ ll `which reboot` `which shutdown`
lrwxrwxrwx. 1 root root 16 3月  30 22:12 /usr/sbin/reboot -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16 3月  30 22:12 /usr/sbin/shutdown -> ../bin/systemctl

私はこれらの2つのファイルはシンボリックリンクをsystemctlにリンクされて見ることができ、そしてここで私はそれを非常に奇妙な動作ができないのはなぜ同じsystemctlにリンクされて見つけますか?これらの二つのシンボリックリンクは同じ権利とは何ではないのですか?

しかしによって、シンボリックリンクの内容を表示するにはどのようにcat /usr/sbin/reboot、ソースに直接使用することができ、この時ファイルを表示するための時間は、このコマンドをreadlink次のように、シンボリックリンクの内容を読み取るために、このコマンドを:

[chen@chen ~]$ readlink `which reboot` `which shutdown`
../bin/systemctl
../bin/systemctl

私たちは、その後、最終的に達成する方法で、内容は同じである見ることができます。実際には、これは判断を行うために始めたときに名前を取得することです。あなたが理解する次のプログラムを見てください:

#include<stdio.h>

int main(int argc,char * argv[]){ for(int i=0;i<argc;i++) printf("%s\n",argv[i]); }

上記のプログラムは、プログラムの入力パラメータを印刷し、使用することは、gcc -std=c99 name.cファイルコンパイラa.outを生成し、a.outのにシンボリックリンクを作成しますln -s a.out b

[chen@chen ~]$ `pwd`/a.out
/home/chen/a.out
[chen@chen ~]$ ./a.out
./a.out
[chen@chen ~]$ ./b
./b

あなたはシンボリックリンクを作成する際には、別の名前を使用して、systemctlは、名前によって異なるロジックがかかることがあり、異なるプログラムの出力の名前を見ることができます。だから、あなたがリブート独自のディレクトリのリンクを構築する場合:ln -s /bin/systemctl reboot効果を達成することは同じです。

第五に、スクリプトの実行の問題は時間にsystemdを開始します

以前の私たちは、このように推奨されていませんrc.localに、systemdに参加します起動時に実行する必要がしているスクリプト内のSystemVのを初期化するとき、私は大きな理由は、並列実行の問題ためだと思います。このスクリプトは、時間のかかる作業の多くを持っている場合、スクリプトは順次開始するための一つ一つを実行することができます。だから、systemdに一つの大きな改善が並列に実行され、私たち自身のサービスプロファイルを用意することが推奨され、使用が管理するのにsystemd。

私の理解では、それが迅速かつ簡単なコマンドであるか、または元のinitディレクトリに配置することができれば、結局、より便利です

ランダムを実行するための六、crontabのスケジュールされたタスク

私はいくつかの点で実行されるタスクの多くを持っている場合は、タスクの思考を発行する計画は、大きな負荷の実装はので、いくつかの無作為化治療ではなく、同時にトリガを必要とする原因と同じ時間を避けるために、ありますが、

アイデアは、1時間でランダム化する、例えば、ランダム関数に参加することである:RANDOM使用環境変数$[(RANDOM%60]

cronの設定ファイル%をエスケープする必要があります忘れないでください:$[(RANDOM\%60]

次のように最終的な結果は以下のとおりです。 0 1 * * * sleep $[(RANDOM\%60]m ; /home/data/shell/script.sh

七つのログ出力と標準出力

Javaのログは一般的にlog4fjを使用して構成ログで、これをlogback。ここでJavaのログに彼らのビジネスについて話を、私たちは今、私たちは一般に、例えば、より多くのアペンダを持ち、標準出力に出力ファイルに出力A。我々はプログラムでIDEを実行すると、あなたがオンライン展開を行っている場合、コンソール内のすべての出力を標準出力には、例えば、nohup daemon & &>/dev/nullログファイルも装備されているので、この方法では、標準出力は、/ dev / nullにリダイレクトしますアペンダので問題ありませんが、あなたは、コードを持っている場合System.out.println、この出力は、情報が失われているだろう。だから、ログログ出力の使用を統一しようと、あなたはまた、プログラムの標準出力にもログに書き込まれるように構成することができます。

参考リンク

  1. なぜ、ディレクトリ・サイズです-異なる-で-LS-L-出力オンXFSファイルシステム
  2. 与えられた時間内でのcronジョブとランダムな時間、

おすすめ

転載: www.cnblogs.com/jinanxiaolaohu/p/10936280.html