記事ディレクトリ
- Linux 運用保守エンジニアの面接での質問 (1)
-
- 1 エイリアス、内部コマンド、外部コマンドの実行順序
- 2 Linuxシステムの起動プロセス
- ユーザーパスワードを解読する3つの方法
- 4 忘れたgrubパスワードを解決する方法
- 5 ハードディスクの容量がいっぱいになった場合の対処方法と、ハードディスク内の大きなファイルを見つける方法
- 6 ハードディスクには明らかに空き容量があるのに、ファイルを保存できないのはなぜですか
- 7 プロセス使用メモリの問題
- 8 プロセス、スレッド、コルーチンの違い
- 9 find コマンドを使用して、/data ディレクトリ内で 15 日以上経過した log で終わるファイルを見つけて削除します。
- 10 su、su -、sudoの違い
Linux 運用保守エンジニアの面接での質問 (1)
希望の仕事が見つかるよう、皆さんの幸運を祈っています。
継続的な学習がなくなることはありません。
地球は爆発しないし、私たちは休暇も取らない。
チャンスは常に準備ができている人に与えられます。
さあ、労働者を殴ってください!
1 エイリアス、内部コマンド、外部コマンドの実行順序
コマンド実行の検索順序: エイリアス > 内部コマンド > 外部コマンド。
つまり、最初にエイリアスであるかどうかを確認し、次に内部コマンドであるかどうかを確認し、最後に外部コマンドであるかどうかを確認します。
拡張: 内部コマンドとは何ですか? 外部コマンドとは何ですか?
内部コマンド: シェルに付属しており、コマンドの形式で提供されます。
外部コマンド: ファイル システム パスの下に対応する実行可能プログラム ファイルがあります。# 使用type命令判断是外部命令还是内部命令 [root@waluna ~]# type -a echo echo is a shell builtin echo is /usr/bin/echo # echo 即为内部命令也为外部命令 [root@waluna ~]# type echo echo is a shell builtin # 内部命令显示结果 [root@waluna ~]# type vim vim is /usr/bin/vim # 外部命令会显示命令的路径 # 使用此命令后效果 [root@waluna ~]# vim 1.sh [root@waluna ~]# type vim vim is hashed (/usr/bin/vim) # 会显示为是hash,因为命令执行后会使用hash缓存在内存中,不会再次依次寻找环境变量的路径,可以直接执行,加速速度
2 Linuxシステムの起動プロセス
OSやバージョンによって異なりますが、以下ではcentos 7を例に説明します。
起動プロセスはさらに複雑ですが、以下に簡単に説明し、詳細を次の図に示します。
- UEFI または BIOS の初期化、POST 電源投入セルフテストの実行。
- BIOS のハードウェア情報をロードし、最初の起動デバイスを取得します。
- 最初のブートデバイス MBR のブートローダー (grub) のブート情報を読み取ります。
- ブートローダー、centos 7 は grub2、ローダーの構成ファイルをロードします。
- /etc/grub.d/
- /etc/default/grub
- /boot/grub2/grub.cfg
- initramfs ドライバー モジュールをロードします。
- カーネルオプションをロードします。
- カーネルの初期化、centos7 は init の代わりに systemd を使用します。
- /etc/fstab のマウントを含む、initrd.target のすべてのユニットを実行します。
- initramfs ルート ファイル システムからディスク ルート ディレクトリに切り替えます。
- systemd は、デフォルトのターゲット構成である構成ファイル /etc/systemd/system/default.target を実行します。
- systemd は sysinit.target を実行してシステムを初期化し、basic.target を実行してオペレーティング システムを準備します。
- systemd は、multi-user.target でローカル サービスとサーバー サービスを開始します。
- systemd は、multi-user.target の下で /etc/rc.d/rc.local を実行します。
- systemd は、multi-user.target で getty.target とログイン サービスを実行します。
- systemd は、グラフィカルに必要なサービスを実行します。
写真はインターネットからのものです、わずかな誤差があります、参考用です
ユーザーパスワードを解読する3つの方法
方法 1:
启动时任意键暂停启动
选择内核按e键进入编辑模式
将光标移动linux开始的行,添加内核参数rd.break # rd.break为打断正常启动
按 ctrl-x 启动
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
# 如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot
方法 2:
启动时任意键暂停启动
选择内核按e键进入编辑模式
将光标移动linux开始的行,改为将 ro 改为 rw init=/sysroot/bin/sh
按 ctrl-x 启动
chroot /sysroot
passwd root
# 如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot
4 忘れたgrubパスワードを解決する方法
root パスワードを忘れ、grub パスワードも忘れた場合は、レスキュー モードに入って/mnt/sysimage/boot/grub/grub.conf
ファイルシャドウ ファイルを直接変更して root パスワードを直接削除し、root を使用して次のことを行うことができます。空のパスワードを使用してログインします。
物理的セキュリティはシステムセキュリティの前提です
5 ハードディスクの容量がいっぱいになった場合の対処方法と、ハードディスク内の大きなファイルを見つける方法
まず、ハードディスクの使用状況df -h
をチェックし。
次に、対応するパーティションに移動して使用するdu -sh *
か、du -a
どのファイル (通常はログ ファイル) がより多くのスペースを占有しているかを確認します。
上記の方法を使用しても大きなファイルが見つからない場合はどうすればよいですか?
特殊なケース 1:
マウントするとデータのあるディレクトリが上書きされるため、dfコマンドでマウント状況を確認する必要があります。マウントを中止した後、元のディレクトリ内の大きなファイルを削除してください。
特殊なケース 2:
多数の削除されたファイルが解放されていません。lsof -n | grep deleted
コマンド削除されたファイルの PID を表示し、対応するプロセスを停止して削除されたファイルを解放し、ハード ディスクの空き容量を増やしてください。
大きなファイルを解放する正しい方法:
cat /dev/null > /data/bigfile または > /data/bigfile ですが、後者は普遍的ではなく、一部のシェルは > をサポートしていません (csh の解放後に rm -f /data/
bigfile を削除するなど)
du、df、ls -l コマンドの違いを調べます。
ls -l はファイルの実際のサイズを確認し、du はファイルが占有しているハードディスク領域の実際のサイズを確認し、df はハードディスクの実際のサイズを確認します。ext シリーズのデフォルトのメタデータは、ext シリーズのデフォルトのメタデータよりもはるかに小さいです。 xfs ファイル システム。
一般に、du の表示は ls -l の表示よりも大きくなります。これは、主に du の表示がブロックの整数倍であるためです。
ファイルが生成される前に 33M のデータが存在するのは、デフォルトのディスクのメタデータもスペースを占有するためです。
6 ハードディスクには明らかに空き容量があるのに、ファイルを保存できないのはなぜですか
理由は、パーティションの inode 番号がいっぱいであるため、df -i
inode の使用状況を確認できます。
一般に、小さなファイルが大量に生成され、inode 番号が枯渇するため、これらの小さなファイルを削除し、inode 番号を解放します。
ソフト リンクが多すぎると、inode が枯渇する可能性もあります。
7 プロセス使用メモリの問題
7.1 メモリ リーク: メモリ リーク
これは、プログラムが malloc または new を使用してメモリ ブロックを適用しますが、free または delete を使用してメモリを解放しないため、このメモリが常に占有されることを意味します。
7.2 メモリ オーバーフロー: メモリ オーバーフロー
これは、プログラムが 10M スペースを申請しましたが、このスペースに 10M バイトを超えるデータを書き込むとオーバーフローが発生することを意味します。
7.3 メモリ不足: OOM
OOM は Out Of Memory、つまり「メモリが使い果たされている」という意味で、Java プログラムでよく見られます。システムはプロセスを強制終了するプロセスを選択し、ログ メッセージに次のようなプロンプトが表示されます。
7 月 10 日 10:20:30 カーネル: メモリ不足: プロセス 9527(Java) スコア 88 を強制終了するか、子を犠牲にします
JVM にオブジェクトにスペースを割り当てるのに十分なメモリがなく、ガベージ コレクターに再利用できるスペースがない場合、問題はアプリケーションで処理できるほど深刻ではないため、このエラーがスローされます。
理由:
- アプリケーションに割り当てられているメモリが少なすぎます。たとえば、仮想マシン自体で使用できるメモリ (通常は起動時に VM パラメータで指定されます) が少なすぎます。
- アプリの使用量が多すぎて、使い切っても解放されず、無駄になってしまいます。このとき、メモリリークやメモリオーバーフローが発生します。
使用したソリューション:
- Java プロセスの最大ヒープを制限し、Java プログラム内のワーカーの数を減らすことで、メモリ使用量を削減します。
- システムにスワップ領域を追加する
8 プロセス、スレッド、コルーチンの違い
意味:
(1) プロセスは、システムによるリソース割り当てとスケジューリングのための独立した単位です。
(2) スレッドはプロセスの実体であり、CPU のスケジューリングと割り当ての基本単位です。
(3) マイクロスレッドとしても知られるコルーチンは、独自の CPU コンテキストを持ち、スレッドよりも実行単位が小さいため、占有リソースが少なく、効率が高くなります。
違い:
(1) プログラムには少なくとも 1 つのプロセスがあり、プロセスには少なくとも 1 つのスレッドがあります。
(2)スレッドの分割規模がプロセスに比べて小さい(リソースがプロセスに比べて少ない)ため、マルチスレッドプログラムの同時実行性が高い。
(3) プロセスは実行中に独立したメモリユニットを持ち、複数のスレッドがメモリを共有するため、プログラムの動作効率が大幅に向上します。
(4) スレッドは独立して実行できず、プロセスに依存する必要があります。
9 find コマンドを使用して、/data ディレクトリ内で 15 日以上経過した log で終わるファイルを見つけて削除します。
find /data -type f -iname "*.log" -mtime +15 -exec rm -rf {
} \;
10 su、su -、sudoの違い
su ユーザー名: 非ログイン切り替え、つまり対象ユーザーの設定ファイルは読み取られず、現在の作業ディレクトリも変更されません、つまり不完全な切り替え
su - ユーザー名: ログインスイッチ。ターゲットユーザーの設定ファイルを読み取り、ホームディレクトリに切り替えます。つまり、完全に切り替えます。
sudo は、/etc/sudoers に依存する権限管理メカニズムであり、どのユーザーが管理者としてどの管理コマンドを実行する権限を持つかを定義します。形式: sudo -u ユーザー名コマンド
su を使用してユーザーを切り替える場合は、対象ユーザーのパスワードを入力する必要があります。sudo を使用してコマンドを実行する場合は、現在のユーザーのパスワードを入力する必要があります。
上記の面接の質問は個人的な要約です。順序に関係なく、思いついたことを自由に書いてください。文章に何か問題がある場合は、コメントしてメッセージを残してください。すぐに修正します。
元のリンク: Linux 運用保守エンジニアの面接の質問 (1)。