- 投稿日:2022-03-03T23:16:44+09:00
AUTOSARの3つの入力
AUTOSARは、OS、通信、診断の3つの入力がある。 当初は、CAN、OSEK OSで始まった。 どちらも国際規格である。 その後、FlexRay,LINも国際規格になった。 OS Grade Linux Linuxは、国際規格になっている。Grade Linuxが安定したら、国際規格にするとよい。 国際規格になった仕様を、AUTOSARが取り入れれば、非関税障壁、独占禁止の対象にはならない可能性がある。 ISO/IEC 23360-5:2006 Linux Standard Base (LSB) core specification 3.1 — Part 5: Specification for PPC32 architecture ISO/IEC 23360-6:2006 Linux Standard Base (LSB) core specification 3.1 — Part 6: Specification for PPC64 architecture 課題、ARMで標準化をするかどうかの洗濯。 車載Ethernet Open Aliance 標準化はIEEEで行なっている。 802.3bw 802.3bp 802.3bu P802.3br 802.3bv 課題としては、とAリエゾンしているISO/IEC JTC1の規格として発行するかどうか。 Diagnostics SAE規格もISO 規格でNormative Referenceすることにより、WTO/TBT協定の枠内となる。 ISO Road vehicles - Diagnostics 等規格調査中。百規格、百記事をめざして。 ISO Diagnostics Normative Reference一覧(表題順) ISO OSI 7層の実例:自動車用診断通信(diagnostics communication) Autoware 自動運転技術を4つめの入力とするとよいかも。 Open Sourceであれば、国際規格とは別の観点で非関税障壁ではないことの証左となるかもしれない。 Autoware 発足当初は、XML、JAVA興隆期だった。 現在なら json, Javascriptも同じような役割を果たせるかも。
- 投稿日:2022-03-03T22:09:22+09:00
Ubuntuで不要なパッケージを根こそぎ削除
Linuxで不要なパッケージを構成ファイルごと消すときの備忘録 削除対象 sudo apt-get purge mysql* 不要になったパッケージを丸ごと削除 sudo apt-get autoremove アーカイブファイルを丸ごと削除 sudo apt-get autoclean
- 投稿日:2022-03-03T19:42:53+09:00
zabbix apiを使ってメンテナンス設定・解除する
サーバアプリケーションのデプロイ時等に、不要なアラートや自動復旧設定を抑制するためzabbixをメンテナンス状態にしたい場合があります。zabbixのGUIからメンテナンス設定しておけば良いのですが、Jenkins等のCI/CD環境が整っているのに、メンテナンス設定だけはGUIから手動というのは面倒なのと、設定漏れのリスクがあります。 そんなこんなで、zabbix APIについて調べたので残しておきます。 注意点 zabbixのVerによって、zabbix APIの仕様やサポート是非が異なっていることがあります この記事はzabbix ver:4.0系で記載しています Verが異なる場合は、API仕様で確認しながら実装すると良いです Zabbix APIを使ってみる 早速使ってみます 基本は、認証(TOKEN取得)→実行したい処理(TOKEN利用)→ログアウト(TOKEN破棄)の流れになります TOKENを取得する まずは、どのAPIを使うにも認証を済ませる必要があります userにはエイリアス(ログインID)、passwordにはログインパスワードを指定します curl -s -d ' { "jsonrpc": "2.0" , "method": "user.login", "params": { "user": "XXXXXXX", "password": "YYYYYYYY" }, "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php 認証が通れば、TOKENが返却されます 以降のAPIを使うためには、このTOKENが必要になります {"jsonrpc":"2.0","result":"hogehogehogehogehogehogehogehoge","id":1} ホストグループを取得する ホストグループのgroupidを確認できます filterは任意項目で、指定しなければ全てのホストグループが取得できます curl -s -d ' { "jsonrpc": "2.0" , "method": "hostgroup.get", "params": { "output": "extend", "filter": { "name": [ "fuga" ] } }, "auth": "hogehogehogehogehogehogehogehoge", "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php メンテナンスを設定する メンテナンスの設定例です この例では、ホストグループを指定したメンテナンスを設定しています ホストグループは、groupidで指定する必要があるので上のAPIで取得しておきましょう active_since、active_tillは十分な期間にしておけば良いと思います curl -s -d ' { "jsonrpc": "2.0", "method": "maintenance.create", "params": { "name": "testmaintenance", "active_since": 1645714800, "active_till": 1964271600, "groupids": [ "15" ], "timeperiods": [ { "timeperiod_type": 0, "period": 6000 } ] }, "auth": "hogehogehogehogehogehogehogehoge", "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php メンテナンスを設定すると、maintenanceidが割り振られます {"jsonrpc":"2.0","result":{"maintenanceids":["12"]},"id":1} メンテナンス情報を取得する メンテナンス設定後でも、maintenanceidを取得することができます ホストグループの取得と同じように、filterを指定することも可能です curl -s -d ' { "jsonrpc": "2.0", "method": "maintenance.get", "params": { "output": "extend" }, "auth": "hogehogehogehogehogehogehogehoge", "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php メンテナンスを削除する maintenanceid指定で、メンテナンスを削除(解除)することができます curl -s -d ' { "jsonrpc": "2.0", "method": "maintenance.delete", "params": [ "12" ], "auth": "hogehogehogehogehogehogehogehoge", "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php TOKENを破棄する APIを使い終えたら、TOKENを破棄してしまいしょう curl -s -d ' { "jsonrpc": "2.0" , "method": "user.logout", "params": [ ], "auth": "hogehogehogehogehogehogehogehoge", "id": 1 } ' -H "Content-Type: application/json-rpc" https://xxxxxx.xxxx.xxx/zabbix/api_jsonrpc.php まとめ zabbix APIは、curlで簡単に使うことができます Ver違いによるAPI差分には注意した方が良いです shell script等で実装すれば、デプロイ前後で自動メンテナンス設定することができそうです 他にもかなりの種類のAPI(API仕様)があるようです、アイテムやトリガーの設定等もGUIより楽かもしれないですね
- 投稿日:2022-03-03T18:38:32+09:00
linuxやmacosでファイルとディレクトリを操作について、よく使うコマンダ
概要 今回,日常の仕事中にlinux OSやmacosでよく使われたファイルやディレクトリの操作コマンドについて、簡単に紹介させて戴きます。 コマンド ls:ファイルやディレクトリの情報を表示します。 cd:作業ディレクトリを移します。 pwd:現在ディレクトリを確認します。 mkdir:新しいディレクトリを作成します。 rmdir:空ディレクトリを削除します。 cp:ファイルやディレクトリのコピーします。 rm:ファイルやディレクトリを削除します。 mv:ファイルやディレクトリの移動、またファイル名、ディレクトリ名の変更を行います。 環境 macOS Monterey 12.2.1 ls youyonghua@youyonghuadeMacBook-Pro test % ls a.txt b.txt test_directory youyonghua@youyonghuadeMacBook-Pro test % testディレクトリにa.txt,b.txtがファイルです。 test_directoryがディレクトリです。 cd youyonghua@youyonghuadeMacBook-Pro test % cd test_directory youyonghua@youyonghuadeMacBook-Pro test_directory % test_directoryディレクトリに移します。 pwd youyonghua@youyonghuadeMacBook-Pro test % pwd /Users/youyonghua/Desktop/test youyonghua@youyonghuadeMacBook-Pro test % 現在ディレクトリを確認できます。 mkdir youyonghua@youyonghuadeMacBook-Pro test % mkdir test2_directory youyonghua@youyonghuadeMacBook-Pro test % ls a.txt b.txt test2_directory test_directory youyonghua@youyonghuadeMacBook-Pro test % test2_directoryというディレクトリを作成します。 rmdir youyonghua@youyonghuadeMacBook-Pro test % rmdir test2_directory youyonghua@youyonghuadeMacBook-Pro test % ls a.txt b.txt test_directory youyonghua@youyonghuadeMacBook-Pro test % test2_directoryというディレクトリを削除します。 cp youyonghua@youyonghuadeMacBook-Pro test % cp a.txt ./test_directory/a.txt youyonghua@youyonghuadeMacBook-Pro test % cd test_directory youyonghua@youyonghuadeMacBook-Pro test_directory % ls a.txt youyonghua@youyonghuadeMacBook-Pro test_directory % a.txtをtest_directoryディレクトリにコピーします。 rm youyonghua@youyonghuadeMacBook-Pro test % ls a.txt b.txt test2_directory test_directory youyonghua@youyonghuadeMacBook-Pro test % rm b.txt youyonghua@youyonghuadeMacBook-Pro test % ls a.txt test2_directory test_directory youyonghua@youyonghuadeMacBook-Pro test % b.txtファイルを削除します。 mv youyonghua@youyonghuadeMacBook-Pro test % ls a.txt test2_directory test_directory youyonghua@youyonghuadeMacBook-Pro test % mv a.txt c.txt youyonghua@youyonghuadeMacBook-Pro test % ls c.txt test2_directory test_directory youyonghua@youyonghuadeMacBook-Pro test % a.txtをc.txtに改名します。
- 投稿日:2022-03-03T15:58:17+09:00
時間のかかるコマンドが終了したらSlackに通知
実行に長時間かかるコマンドをよく実行する場合に便利。 研究で数時間かかるスクリプトを回しがちで、終了したら教えてほしかったので作った。 zshで書いているが、hookがあるシェルならできる(hookの登録の仕方が違うと思うけど) やりたいこと しきい値が10秒の場合 ls #通知は来ない heavy-command #10秒以上かかる場合は終了後slackに通知が来る のように、実行に10秒以上時間がかかった場合だけ、Slackに終了通知を飛ばしてほしい 実現方法 Webhook URLを取得する 予めSlack:Webhook URL取得してSlackに通知するなどを参考にWebhook URLを取得。 .zshrc追記 ホームディレクトリにある.zshrcに以下を追記する。($WEBHOOK_URLは上記で取得したURLに書き換える) alias snotice='curl -X POST --data-urlencode "payload={\"username\": \"webhookbot\", \"text\": \"Command finished:$CMD_NEWEST \", \"icon_emoji\": \":ghost:\"}" $WEBHOOK_URL' function record_start_time(){ export PREEXEC_TS=`date '+%s'` local LINE=${1%%$'\n'} export CMD_NEWEST=${LINE%% *} } function notify_to_slack(){ THRESHOLD_TS=`date -d "10 second ago" '+%s'` #ここでしきい値を調整(この場合は10秒) if [ -z $PREEXEC_TS ]; then PREEXEC_TS=`date '+%s'` fi if [[ $PREEXEC_TS -lt $THRESHOLD_TS && $CMD_NEWEST != (vim|ssh|man) ]]; then #vim, ssh, manは対象外にする snotice fi PREEXEC_TS= } autoload -Uz add-zsh-hook add-zsh-hook precmd notify_to_slack add-zsh-hook preexec record_start_time テスト source .zshrc sleep 3 #通知は来ない sleep 13 #通知が来る
- 投稿日:2022-03-03T11:32:49+09:00
Lpic Level1を学習するにあたって出てきた単語を見返せるように1つのページにまとめてみた。
何の略だったかわからなくなったときのために同一ページ内で検索できるようにする。 マークダウン記法での記載も徐々に改善していく。 ○ディレクトリ表記になっているもの(ファイルも含む) ・/(root) 最上のディレクトリであるルートディレクトリのこと ・/bin : BINary directory OSの最小限の正常な駆動のため、すべてのユーザーが使用する実行ファイルが入っている ・/boot BootLoaderなどのシステム起動に必要なファイルが入る ・/boot/grub/grub.cfg GRUB2の設定ファイル。直接編集することはない ・/dev : DEVice ハードウェア機器を表すデバイスファイルが保存される ・/etc : etcetera Linuxシステムのほぼすべての設定ファイルを持つ。 ・/etc/inittab : etcetera / initialization table ・/etc/ld.so.cache 共有ライブラリを検索するためのバイナリファイルで、ldconfigコマンドを使用して作成する ・/home ・/lib : LIBrary ・/media 主にOSで自動的にマウントしてくれるポイントとされる ・/mnt : mount 取り外し可能なデバイスに対してファイルシステムを臨時に接木するためのディレクトリ。 ・/tmp : temporary システム使用中に発生した一時的なデータなどが保存される ・/sbin : Supervisor BINary ルートユーザのみ実行できるプログラムが置かれる ・/opt : OPTion 追加されるアプリケーションなどが入る ・/proc : process カーネル関連情報が保存され、メモリ上に存在するため、仮想ファイルシステムと呼ばれる。 ・/sys : system Linuxカーネルに関する情報を保存 ・/usr 一般ユーザー用のディレクトリ ・/var :VARiable ○コマンド等 ・<< ヒアドキュメントといい、終了文字が現れるまでコマンドの標準入力に入力を続けるリダイレクト演算子 ・apt : Advanced Package Tool apt-getとapt-cacheの機能を統合した、APTツールのコマンドです。Debian GNU/LinuxやUbuntuなどのディストリビューションで使用されています。 aptはdeb形式のパッケージを管理します。 ・apt-get インターネット上ないしはメディア上のパッケージ情報のデータベースを使い、依存関係を調整しながら、パッケージのインストール・アンインストールなどを行えるコマンド ・BIND : Berkeley Internet Name Domain ISC(Internet Systems Consortium)という組織によって配布されているフリーソフトウェア ・BIOS : Basic Input/Output System ・bzcat : BZip conCATenate bzip2形式(拡張子.bz2)で圧縮されたファイルを展開して直接標準出力へ送信する ・cat : conCATenate ファイルの中身を標準出力へ出力する ・cd : Change Directory ・chmod : CHange MODe ファイルやディレクトリのアクセス権を変更する ・CNAME : Canonical Name ホスト名の別名を記述する ・cp : CoPy ファイルをコピーする ・cpio : CoPy In and Out cpio形式のアーカイブを扱うコマンド cpioコマンドは標準入力や標準出力を使用するため、入出力ファイルをコマンドの引数として指定できない ・cron : Command Run ON 自作したシェルスクリプトや Linux のコマンドを定期的に実行させる仕組み。crondという常駐プログラム(デーモン)が常に動作していて、ユーザが指定した時間に指定したコマンドを実行する機能を持つ ・curl ・cut 一行の中で特定の部分を切り出す ・dig : Domain Information Groper ドメインの詳細情報を表示する ・dpkg : Debian PacKaGe manager Debian パッケージの、インストール、構築、削除、管理をするためのパッケージ管理ツール オプション -i : install :パッケージのインストール -r : remove :設定ファイルを残してパッケージをアンインストール -P : purge :設定ファイルも含めて完全にパッケージをアンインストール -l : list :インストール済みパッケージを検索して表示 -L : listfiles :指定したパッケージからインストールされたファイルを一覧表示 -s : status :インストール済みのパッケージの詳細情報の表示 -S : search :指定したファイルがどのパッケージからインストールされたかを表示 -C : audit :インストールが完了していない(不完全)パッケージの表示 ・DNF : DaNdiFied yum yumの後継で、ダンディーなyum、後継となるパッケージ管理ツール。Linuxディストリビューションの1つであるFedoraでは、Fedora 22からデフォルトのパッケージ管理ツールになっている。 ・echo 文字列や変数の値を表示する ・fmt : simple text ForMaTter 1行あたりの最大文字数を指定してテキストを整形する ・FQDN : Fully Qualified Domain Name 完全修飾ドメイン ・file ファイルの種別を調べる ・find 検索対象ディレクトリを指定し、そのディレクトリ以下に対して検索条件にマッチするファイルやディレクトリを探す ・grep : Global Regular Expression Print 入力テキストの中から指定した検索パターン文字列があるかを検索し、マッチした行を出力する ・GRUB : GRand Unified Boot loader システム起動時にロードするインストール済みのオペレーティングシステム(OS)、カーネルを選択できるプログラム 昔はMBR ・head 入力データの先頭部分を表示する ・hostnamectl ホスト名を変更する ・ip ネットワークデバイスやルーティングを制御する ・journalctl バイナリデータとして独自のログデータベースに保存されそのままでは閲覧することができないjournaldが収集するログ情報を参照する ・journald CentOS7ログ管理サービスとして動作 ・kill : 動作しているプロセスを終了させる 1:SIGHUP:signal hangup ハングアップ(端末切断) 2:SIGINT:signal interrupt キーボードからの割り込み( Ctrl + C 相当) 9:SIGKILL:signal kill 強制終了 15:SIGTERM:signal terminate 終了 シグナル番号を指定しない場合は、SIGTERM (シグナル番号 15 )が送信される ・last ・LDAP : Lightweight Directory Access Protocol ・less コマンドの出力結果が一画面に収まらない場合に、出力を一画面ずつ表示する ・ln : LiNk リンクを作成する ・ls : LiSt ・man : MANual コマンドのオンラインマニュアルを表示する 1:ユーザーコマンド 5:ファイルの書式と慣習 8:システム管理コマンド(root用) ・MBR : Master Boot Record 最近ではGRUB ・md5 : Message Digest algorithm 5 暗号学的ハッシュ関数のひとつ ・mkdir : MaKe DIRectory 新たにディレクトリを作成する ・modprobe : module probe 依存関係を考慮してカーネルモジュールをロードまたはアンロードするコマンド probeは調査という意 ・mv : MoVe ファイルやディレクトリを移動 ・MX : Mail eXchange ゾーン内のメールを処理するサーバを記述する ・nice nice値を指定してコマンドを実行(プロセスを起動)する。niceコマンドでは、すでに起動しているプロセスのnice値を変更することはできないので、reniceを使う ・nl : Number Line ファイルの内容に行番号をつけて表示する ・nmcli ネットワーク関連の操作をコマンドラインにて行う ・nohup : NO HUngUP ログアウト後もジョブを実行させる ・NS : Name Server ゾーンを管理する DNS サーバを記述する ・paste 複数のファイルを行単位で結合する ・pgrep : Process Global Regular Expression Print 実行中のプロセスから特定の名前を持つプロセスIDを検索する ・ping : Packet INternet Groper ネットワークの先にあるホストへの接続確認を行う gropeは手探りするという意 ・printenv : PRINT ENVironment 環境変数の中身を確認する ・ps : process status ・PTR :domain name PoinTeR IP アドレスからホスト名への変換を記述する ・pwd : Print Working Directory カレントディレクトリを表示 ・read シェルスクリプトを実行する中でユーザからの入力を受け取る ・renice すでに起動しているプロセスのnice値を変更する ・rm : ReMove ファイルを削除する ・rmdir : ReMove DIRectory ディレクトリを削除するコマンドが rmdir コマンドです。ただし、削除できるディレクトリはファイルやディレクトリを持たない空のディレクトリに限定されます。 ・rpm : Red hat Package Manager RPMツールのコマンドです。RPMパッケージ”を扱うことができるパッケージ管理コマンド ・rsyslog : Rocket fast syslog journaldが転送するログを受け取りログファイルに保存する。syslog.confの改良版 ・sed : Stream EDitor ファイルや標準入力の内容を編集して表示する ・sha : Secure Hash Algorithm ファイルをダウンロード(コピー)した後に、破損や改変がないことを確認する。ファイルを読み込み、ハッシュ値を表示、照合する ・SOA : Start Of Authority ゾーン情報の構成情報を記述する ・sort 行単位でファイルの内容をソートする ・split 指定した行数でファイルを分割する ・ss : socket statistics ネットワークに関する情報を表示する。netstatに替わるLinux標準のネットワークの状態を確認する ・systemctl systemdに対して操作指示を出す ・systemd : system daemon CentOS7から導入された新しいinitプログラム。Linuxサーバのほとんどのサービス(機能)をsystemdで制御する ・tail 入力データの末尾部分を表示する ・tar : tape archives 複数のファイルをまとめて1つのファイル(アーカイブ)にする、またはアーカイブを展開する -c:create:新しいアーカイブを作成 -x:アーカイブからファイルを展開 -t:アーカイブの内容を一覧表示 -f:アーカイブファイル名を指定 -v:処理の詳細情報の表示 -z:gzipを通して圧縮/展開 -j:bzip2を通して圧縮/展開 -J:xzを通して圧縮/展開 ・tee : T アルファベットの「T」らしい。 ・touch ファイルに保持されている最終修正時刻と最終アクセス時刻情報を指定する時刻に更新する ・tr : translate 標準入力から文字列を読み込み、指定した置換ルールで文字を置換して出力 ・tracepath : ・traceroute : 通信相手のサーバまでのネットワークの経路情報を確認する ・UEFI : Unified Extensible FIrmware ハードウェアのチェックと初期化を行う ・uname : Unix NAME 現在使用しているシステムの情報を表示する ・uniq ソートされているファイルにある連続した重複行のみを表示する -d:Duplicate:重複している行のみを表示 -u:Unduplicate:重複していない行のみを表示 ・unset すでに設定されている環境変数やシェル変数を削除する ・UUID : Universally Unique Identifier ・w 現在ログイン中のユーザの情報やCPUの使用状況を取得する ・watch 指定したコマンドを一定時間ごとに繰り返し実行し、結果を表示する。デフォルトは2秒 ・wc : Word Count ファイルの行数、単語数、文字数を表示する ・wget : Web GET ・which 指定したコマンドが何処に格納されているかを調べる ・xy xz形式でファイルを圧縮する -d:decompress:圧縮ファイルの展開 -k:keep:圧縮・展開処理後に元のファイルを削除しない -l:list:圧縮ファイルの情報を表示する ・yum : Yellowdog Updater Modified Linuxシステムにおけるソフトウェアパッケージの管理を行うプログラムの一つ ○vi・vimについて ・vim : Vi IMproved viの拡張版として開発されたエディタ ・コマンドモードから入力モードに切り替える i:現在のカーソルの前の位置から入力する( insert ) a:現在のカーソルの後の位置から入力する( append ) I:カーソルを現在の行の行頭に移動し行頭から入力する A:カーソルを現在の行の行末に移動し行末から入力する o (小文字のオー):現在のカーソルのある行の下に一行あけその行頭から入力する O (大文字のオー):現在のカーソルのある行の上に一行あけその行頭から入力する ・カーソル移動操作 h:左へ1文字移動 j:下へ1文字移動 k:上へ1文字移動 l:右へ1文字移動 H:画面上の先頭行の先頭に移動 L:画面上の最終行の先頭に移動 0 (数字のゼロ):現在のカーソルのある行の先頭に移動 $:現在のカーソルのある行の末尾に移動 :0:ファイルの先頭行の先頭に移動 :$:ファイルの最終行の先頭に移動 :n ( n は数値指定):ファイルのn行目の先頭に移動 ・コマンドモードでの編集操作 x:カーソル位置の文字を削除 dd:現在のカーソルのある行を削除 yy or Y:現在のカーソルのある行をバッファにコピーする(y:yank) p:現在のカーソルのある行の下へバッファの内容を貼り付ける P:現在のカーソルのある行の上へバッファの内容を貼り付ける r 文字:カーソル位置の文字を指定した文字で置き換える ・コマンドモードでの検索操作 / 検索パターン:現在のカーソルのある行から下へ検索パターンに指定された文字を探す ? 検索パターン:現在のカーソルのある行から上へ検索パターンに指定された文字を探す n:次の検索パターンにマッチした場所へカーソルを移動 N:n と逆方向に検索パターンにマッチした場所へカーソルを移動
- 投稿日:2022-03-03T11:23:57+09:00
所属グループに応じたシェル実行 .bashrc
はじめに Linux,Ubuntu のド素人がサーバ構築を行うこととなったため備忘録を兼ねて行ったことを書いていきます1。 行いたいこと ユーザが所属するプライマリグループに応じてpathを通すなどの処理を行いたい。 bash の初期化ファイルについて bashの起動時に初期化を行う各種シェルが実行されます。 図の引用元:https://blog1.mammb.com/entry/2019/12/01/090000 実際にUbuntu20.04での読み出し順序がこちらの図と一致しているかは未確認です。 また、profileの方に記述すればログイン時の1回のみの実行となるため、そちらに記述する方が良さそうにも思えます。 しかし、オーバーヘッドは大きくないかとも思いますので本記事では~/.bashrc に追記して実現します2。 ~/.bashrc ubuntu20.04ミニマルインストール時の~/.bashrcは以下となっていました。 ~/.bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth # append to the history file, don't overwrite it shopt -s histappend # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # If set, the pattern "**" used in a pathname expansion context will # match all files and zero or more directories and subdirectories. #shopt -s globstar # make less more friendly for non-text input files, see lesspipe(1) [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color|*-256color) color_prompt=yes;; esac # uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi エイリアス設定用の. ~/.bash_aliases を呼び出す記述を真似ると初期化ファイルを更に別ファイルに用意できそうです。 ユーザのプライマリグループを確認し、意図した値であればumask3の値の変更やpathを通すようにします。 ~/.bash_hoge if [ "`id -gn`" = "hoge" ]; then # umask umask 0002 fi . ~/.bash_hogeを実行し、意図した設定が反映されるか確認た後、このファイルを実行するよう~/.bashrcを編集します。 ~/.bashrc if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi + # bash_hoge + if [ -f ~/.bash_hoge ]; then + . ~/.bash_hoge + fi うまくいったので、/etc/skel/に上記の2ファイルをコピーします。 これにより、ユーザ追加時に~/.bashrc 、~/.bash_hogeへ自動的に反映されます。 ユーザ追加時に行う処理が減り、少し楽になります。 おわわりに はじめに述べた通り、LinuxやUbuntuに関してはド素人です。 特にLinuxのポリシーなどは把握できておらず、本記事の方法で実現できても更に良いやり方はあるのではと思っています。 もっと良いやり方をご存じの方も同じ方法で実現されている方も、コメントいただけると大変助かります。 同時に初投稿のため、記述方法など記事の体裁も整っていない。 ↩ 現状では取り合えず実現できているため良しとしています。しかし、実際に読み込まれる順序は確認したいところです。 ↩ ユーザ名とプライマリグループ名が異なるとumask 0022とするようなので、umask 0002に変更する。 ↩
- 投稿日:2022-03-03T06:21:19+09:00
Mac OS初心者、コンソールでcurl出来なくて困った
最近初めてMac OSを触っていて、JenkinsのAPIを利用するためコンソールでcurlコマンドを叩いた際にこんな表示になった curl --user ’hogehoge:qwsedrftgyhujiko' -s 'http://....../json' エンターポチッ > エンターポチッ > エンターポチッ > エンターポチッ > curlでjsonを取得したいのだが、実行したら大なりが表示されるだけで URLが合っているのか間違えてエラーになっているのかすら分からず、 再度コマンドとにらめっこして判明 →→→ ’hogehoge:qwsedrftgyhujiko' -s 'http://....../json' Macに備わっているメモにコマンドを書いてコピペ実行していたが、メモの表示に慣れずシングルクォーテーションの全角半角が違っていることに気付かなかった。 もしやと思い > に ' を入力してエンターを押したら無事にコマンドを終了出来た。 最後に これが発生した時知識が何もなかったので「Linux 大なり 入力待ち」などで検索した結果、どこも標準出力について書いてあるだけで対処法が全然見つからず焦った経験をここに記載しました。(Control + C で対処自体は簡単に出来るけど) 初歩的な内容かとは思いますが、同じ現象でお困りの方の参考にしていただけましたら幸いです。