20210802のLinuxに関する記事は5件です。

【LinuC102 学習】fuserコマンド

はじめに こちらはLinuC102試験学習中の方向けの記事になります。 LinuCとは:https://linuc.org/about/01.html 今回はfuserコマンドの複雑なoptionについて下記にまとめました。 覚えやすいかと思いますので参考にしてください。 fuserコマンド ・fuserとはローカルホストのリソースを使用中のプロセスを検索し、表示、強制終了することのできるコマンド ・由来:「ファイル(File)を使っている人(USER)を調べることができる」とういうところから option早見表 name optionの意味 option内容 -k kill(プロセス終了) プロセスにSIG KILLを送信。送りたいシグナルを指定するには-kではなく「-シグナル名」とする -m mount マウントされたファイルシステムを指定 -n namespace 検索する領域を指定。file、udp、tcpが指定できる -u user 検索結果にユーザー名追加 -v verbose(詳細) 詳細な情報を表示 -a all コマンドラインから渡されたすべての -i プロセスをkillする前に確認します。オプション -k と共に使用。 -l ls 使用できるすべてのシグナルリストを表示します。 ※最短で覚えたい人はoptionの意味を覚えると早いと思います。 書式 $ fuser [オプション] 検索対象 //option別指定項目 [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays][-l user] その他、パスワードの有効期限に関する設定が可能なコマンド name optionの意味 lsof ファイルシステムやポートなど、システムのリソースを使用しているプロセスの情報を表示可能 ※lsofコマンドは情報を表示するだけですが、fuserコマンドでは表示だけではなく、検索したプロセスに対してシグナルを送ることが可能 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linuxの基本コマンド】

前提 Linux基本コマンドについて自分用メモとして投稿しています。 現在は深く学べていないのでこれからも追加していく予定です!! Linuxとは? OSの一種。 幅広い用途で使われており、たくさんのユーザーに検証されてきたので大きく変更する必要がないです。 その為、一度習得すればこれから先長く使えます。 コマンド集一覧 ・cd ディレクトリ(フォルダ)移動する cd (移動したいフォルダ名) ・ls フォルダの内容をリスト形式で表示 中身を見たいフォルダに移動してlsを見る ・mv ファイルを移動する mv (移動元ファイル名/フォルダ名)(移動先ファイル名/フォルダ名) ・cp ファイルやフォルダをコピーする cp (移動元ファイル名/フォルダ名)(移動先ファイル名/フォルダ名) ・clear 消さずに画面を綺麗にする ・mkdir フォルダを作成する mkdir (フォルダ名) ・touch ファイルを作成する touch (ファイル名) ・rmdir 空のフォルダを削除する rmdir (フォルダ名) ・rm ファイルやフォルダを削除する rm (ファイル名/フォルダ名) ・pwd 現在いる位置を表示する ・find ファイルの検索をする find (/-name ファイル名) ・cat ファイルの内容を表示する cat (ファイル名) diff ファイルとファイルの内容の違いを表示する diff (旧ファイル名 新ファイル名) ・grep 指定した文字列がテキスト内に存在した場合その行を抽出する。 grep (検索したい文字・ファイル名) ・chmod ファイルやフォルダのアクセス権限を変更する。 chmod (chmod 権限ファイル名) ・chown ファイルやフォルダのオーナーやグループを変更する。 chown (変更したいユーザー名 変更したいファイル名) ・history コマンドの履歴を表示する ・ln ファイルやフォルダにリンクを設定する。 ln (リンク元ファイル名 リンク先ファイル名/フォルダ名) ・man コマンドのマニュアルを表示する man コマンド ・apropos manページの内容を検索する apropos キーワード ・less テキストファイルを閲覧する less ファイル名 ・more ファイルをページ単位で閲覧する more ファイル名 ユーザー管理の際のコマンド useradd/adduser ユーザーを新規作成 deluser ユーザーを削除 groupadd グループを新規作成 chfn ユーザー情報を変更 システム管理の際のコマンド free 空きメモリや、使用中メモリを表示 last 最近ログインしたユーザー名を表示 finger ユーザー情報を表示 ネットワーク管理設定の際のコマンド route ルーテイングの表示や設定を行う ftp ファイルをFTPで転送を行う ssh sshでログインする 便利なショートカットキー ・自分がよく使用しているショートカットキーについても紹介します! ↑↓ コマンド履歴を順に表示 tabキー フォルダやファイル名の予測変換 Ctr + a カーソルを先頭 Ctr + e カーソルを終端 Ctr + b カーソルを一文字戻す Ctr + f カーソルを一文字進める Ctr + d カーソル位置の文字を消す Ctr + r コマンド履歴の中で検索 最後に ・私はよく忘れますのでここに執筆しました。笑 少しずつ指に腹落ちさせていきます!! 読んでくださった方、ありがとうございます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

screenコマンドチートシート

毎回忘れて調べてるので自分用にメモ screenとは リモートで長時間かかるスクリプトなんかを実行したいときに使います。 screen 上でスクリプト実行することで、 ssh 接続切れによるスクリプト実行中断を防ぐことができます。 screen 起動 $ screen $ screen -S <sessionname> でセッション名をつけることもできます。そんな使わない。 screen を抜ける Ctrl+A d で screen を抜けられます。 実行中のプロセスは継続し、 detached 状態になります。 screen上のプロセス一覧確認 screen 上で実行中プロセスの pid, attached/detached 状態を確認できます。 $ screen -ls screen 上のプロセスを attach detached 状態の pid を指定することで attach できます。 $ screen -r <pid> attached な pid を指定するとエラーになります。 screen 上のプロセスを detach attached 状態の pid を指定することで detach できます。 $ screen -d <pid> detach してから attach することで横取りできます
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux(Mint)でのOpenCVセットアップ

今回の記事は頻繁に環境をリセットします。 そのため、やや備忘録的な側面が強いです。 今回はLinux Mint でのOpenCVとPythonの環境構築に関しての記事です。 今回の構築した環境も示しておきます。 lenovo thinkpad x240 cpu : intel core i5 4200u mem : 4gb ssd : 128gb 早速ここからが本題ですね まずターミナルを起動します。 まずはPythonの環境構築を行います。 Python環境の設定 Pythoneのパッケージ管理システムをインストールします。 sudo apt install python3-pip これを行うことでPython3用のパッケージ管理システムpipのインストールが完了します。 OpenCVのインストール ここでは先程インストールしたpipを用いてOpenCVをインストールを行います。 sudo pip3 install opencv-python sudo pip3 install opencv-contrib-python ここで問題ながければOpenCV自体のインストールは完了です。 NumPy ここまでインストールを行ったついでにどうせ使うので機械学習などでよく使われているNumPyをインストールしておきましょう。 pip3 install numpy 確認 ここまで問題がなければいいのですが念の為確認も行いましょう。 ターミナル上で python3 を入力してください そうするとPytonのインタプリタが起動し入力ができるようになるはずです。 そこで >> import cv2 >> cv2.__version__ 問題がなければここでインポートエラーがなくバージョン情報が表示されるはずです。 もしここまででエラーが発生した場合はPipのアップデートなどを行い再度コマンドを入力してみてください 最後に ではでは拙い文章ですが見ていただいてありがとうございます。 またどこかでお会いしましょう。 バイバイ!!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

linux kernelにおけるinsmodの裏側を確認

ちょっと早い夏休みだ自由研究をしよう(3日目) TL;DR kernel objectのinsmod処理は、kernel/module.cの中で行われる。 syscall(init_module)が起点となる。 最終的にはkernelへのnotifierが呼ばれる。 はじめに insmodってよく使いますよね! でも、その裏側は見た記憶があまりない… ここでは順番にその流れを確認していきたい。 busybox 組込エンジニアなので、busyboxのinsmodを起点とする。 ユーザーからの要求は、busybox/tree/modutils/insmod.cで受け取る。 kernelへの要求は、busybox/tree/modutils/modutils.cで行われる。 Kernel kernel側のソースコードは、大部分がkernel/module.cにまとまっている。 point Q. moduleの未定義シンボルはどこで解決されるの? A. simplify_symbols()から呼ばれた、resolve_symbol()で。 Q. moduleのアドレス再割り当てはどこで行われる? A. apply_relocations() で補正される。 static int apply_relocations(struct module *mod, const struct load_info *info) { unsigned int i; int err = 0; /* Now do relocations. */ for (i = 1; i < info->hdr->e_shnum; i++) { unsigned int infosec = info->sechdrs[i].sh_info; /* Not a valid relocation section? */ if (infosec >= info->hdr->e_shnum) continue; /* Don't bother with non-allocated sections */ if (!(info->sechdrs[infosec].sh_flags & SHF_ALLOC)) continue; if (info->sechdrs[i].sh_flags & SHF_RELA_LIVEPATCH) err = klp_apply_section_relocs(mod, info->sechdrs, info->secstrings, info->strtab, info->index.sym, i, NULL); else if (info->sechdrs[i].sh_type == SHT_REL) err = apply_relocate(info->sechdrs, info->strtab, info->index.sym, i, mod); else if (info->sechdrs[i].sh_type == SHT_RELA) err = apply_relocate_add(info->sechdrs, info->strtab, info->index.sym, i, mod); if (err < 0) break; } return err; } この関数内の、apply_relocate()は、例えば、ARMの場合ならば、arm/kernel/modules.c内に定義されている。 Q. kernelはどうやってinsmodされたことを知覚するの? A. do_init_module()内の関数が、kernelへの通知処理。 /* * This is where the real work happens. * * Keep it uninlined to provide a reliable breakpoint target, e.g. for the gdb * helper command 'lx-symbols'. */ static noinline int do_init_module(struct module *mod) { int ret = 0; struct mod_initfree *freeinit; freeinit = kmalloc(sizeof(*freeinit), GFP_KERNEL); if (!freeinit) { ret = -ENOMEM; goto fail; } freeinit->module_init = mod->init_layout.base; /* * We want to find out whether @mod uses async during init. Clear * PF_USED_ASYNC. async_schedule*() will set it. */ current->flags &= ~PF_USED_ASYNC; do_mod_ctors(mod); /* Start the module */ if (mod->init != NULL) ret = do_one_initcall(mod->init); if (ret < 0) { goto fail_free_freeinit; } if (ret > 0) { pr_warn("%s: '%s'->init suspiciously returned %d, it should " "follow 0/-E convention\n" "%s: loading module anyway...\n", __func__, mod->name, ret, __func__); dump_stack(); } /* Now it's a first class citizen! */ mod->state = MODULE_STATE_LIVE; blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_LIVE, mod); /* Delay uevent until module has finished its init routine */ kobject_uevent(&mod->mkobj.kobj, KOBJ_ADD); まとめ kernel objectのinsmod処理は、kernel/module.cの中で行われる。 syscall(init_module)が起点となる。 最終的にはkernelへのnotifierが呼ばれる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む