SSH端末を切断したりして、.bash_logout が走らない時の対応策。 [Linux]
Linuxのログアウトの時に、コマンド履歴をクリアしたい場面があるとします。
これは ~/.bash_logout に以下の処理を入れ込めばできます。
履歴をクリアにしてから、ファイルに上書きするのですね。history -cだけで消えたと思ってしまいますが、メモリに常駐しているヒストリーが消えただけなので、次の時に.bash_historyから復活してしまいます。以前のexit時に.bash_historyがなければ、exitで消えてしまうので問題ないんですが、history -w しない片手落ちのサイトをそこそこ見ました。
なお、消すだけじゃなくて、履歴をどこかに取っておきたいなら、history -cの前でhistoryコマンドを適当なディレクトリでリダイレクトします。
ただ、そこには問題があって、exitコマンドを打って終了してあげないと、.bash_logoutが発動しないんですね。SSH端末ごと終了したり、何かのタイムアウトで接続が切れてしまったりしても、.bash_logoutの処理は走りません(少なくとも自分のところの環境ではみなそうであった)。仮に上のようにコマンド履歴をクリアしたくても自動でしてくれなくなってしまう。
https://yeupou.wordpress.com/2018/03/29/clearing-bash-history-on-exit-of-any-kind/
https://tutorialmore.com/questions-183794.htm
ここ↑の両サイトには以下のような.bashrcを書けばよいと書いてあります。
もちろん /etc/bashrc に書いてもいい。
でも、自分のところではこれではSSH端末を終了させたときに.bash_logoutが発動しなかった。
それとaliasで始まる最後の行はなくても大丈夫みたい。
自分のところで動いたコードは、最後の行が
でした。SIGHUPをEXITにしただけ。その他のところは変えなくても問題なく動くみたいです。
SIGHUPではダメな人はEXITをお試しあれ。
exitせずにSSH端末を落としても、たぶん他のところから回線が切られても.bash_logoutは動作します。ただこれはRHELとTeraTermやRLoginの組み合わせなので、他では効いてこないかもしれないです。
https://shellscript.sunone.me/signal_and_trap.html
https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
https://superuser.com/questions/410525/explain-why-bash-logout-wont-run-commands/410534#410534
ここいらへんを見て、少し試行錯誤しました。コンピュータ関係では書いてあることと違う事も結構ある。確かにSIGHUPを無視するnohupというコマンドもあるくらいだから、SIGHUPで良さそうだけど実際には動かなかった。なので動くコードが正本ってことで、自分の環境には適用しました。動かないと話にならないもんね。
というか、正常終了しなくても.bash_logoutが動いてほしいんだけど。
《後記》
trap exit_session EXIT という書き方で一般ユーザーはきちんと.bash_logoutの処理が動いていたんだけれど、rootだとなぜか動かないんだよね。/root/.bash_logoutに設定しているんだけども、rootで端末ぶち切ったときには発動しない。なぜなんだろう…
解決したようです。
と書けば動作しました。
https://shellscript.sunone.me/signal_and_trap.html
1,2,3,15のシグナルでrootでは引っ掛かってる模様。それなら
で良さそうなものだけれど、分けて書いたほうがいいみたいなサイトもあったので結局分けた。
でも、それでもまだ問題が出た。消すだけならいいんだけど、先にも言ったようにhistoryをリダイレクトして他の場所に出力すると、なぜかファイルが空になる。何で履歴が空になるんだろうと不思議に思っていたんだけど、どうやら.bash_logout が少なくとも2回実行されているみたいなのだ。なので1回目のリダイレクトで書き込めても、2回目に空になったhistoryの出力で上書きされて空になる。
bashのバグか、それもそのバージョンだけのbashのバグかわからないけど、場合によっては2回実行される(いつもではない)のは再現している。さらに面倒なことにそこのサーバはユーザーを段階的に踏んで、rootになるようになっていて(まぁ普通はrootでいきなり入れないようにする)、rootになるまで数ユーザーを経ている。なのでSSHクライアントをぶち切った後、各ユーザーの.bash_logoutの処理が走るわけだが、そのせいもあるのかもしれない。
処理的には使っている各ユーザーの処理がスタックされて.bash_logoutが走っているのはわかるのだが、2回走る意味がわからない。設定でそうなっている可能性はあるのだが、そこまで調べたくない。なので
history > /var/log/history_user01`date +%Y%m%d%H%M`.log
を
history >> /var/log/history_user01`date +%Y%m%d%H%M`.log
に変えた。
そうすれば2回目に空の内容を書き込もうとしても、1回目の出力は消えない。やっと解決した感じ。
問題として
・SIGHUPでtrapされない
・rootで実行されない
・.bash_logout が複数回実行される
ということがあったわけだが、
・trapをEXITにする
・trapを1 2 3 15 にする
・historyの出力をリダイレクトする場合、上書きでなく追記にする
でとりあえず解決した。遠い道のりであった…
最後に関しては特定のバージョンのバグぽいので、やらなくていい場合はあると思うけど、やっておいてもたぶん害はないので大丈夫なはず。
これは ~/.bash_logout に以下の処理を入れ込めばできます。
history -c history -w
履歴をクリアにしてから、ファイルに上書きするのですね。history -cだけで消えたと思ってしまいますが、メモリに常駐しているヒストリーが消えただけなので、次の時に.bash_historyから復活してしまいます。以前のexit時に.bash_historyがなければ、exitで消えてしまうので問題ないんですが、history -w しない片手落ちのサイトをそこそこ見ました。
なお、消すだけじゃなくて、履歴をどこかに取っておきたいなら、history -cの前でhistoryコマンドを適当なディレクトリでリダイレクトします。
ただ、そこには問題があって、exitコマンドを打って終了してあげないと、.bash_logoutが発動しないんですね。SSH端末ごと終了したり、何かのタイムアウトで接続が切れてしまったりしても、.bash_logoutの処理は走りません(少なくとも自分のところの環境ではみなそうであった)。仮に上のようにコマンド履歴をクリアしたくても自動でしてくれなくなってしまう。
https://yeupou.wordpress.com/2018/03/29/clearing-bash-history-on-exit-of-any-kind/
https://tutorialmore.com/questions-183794.htm
ここ↑の両サイトには以下のような.bashrcを書けばよいと書いてあります。
もちろん /etc/bashrc に書いてもいい。
exit_session() { . "$HOME/.bash_logout" } trap exit_session SIGHUP alias exit='. "$HOME/.bash_logout" ; exit'
でも、自分のところではこれではSSH端末を終了させたときに.bash_logoutが発動しなかった。
それとaliasで始まる最後の行はなくても大丈夫みたい。
自分のところで動いたコードは、最後の行が
trap exit_session EXIT
でした。SIGHUPをEXITにしただけ。その他のところは変えなくても問題なく動くみたいです。
SIGHUPではダメな人はEXITをお試しあれ。
exitせずにSSH端末を落としても、たぶん他のところから回線が切られても.bash_logoutは動作します。ただこれはRHELとTeraTermやRLoginの組み合わせなので、他では効いてこないかもしれないです。
https://shellscript.sunone.me/signal_and_trap.html
https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
https://superuser.com/questions/410525/explain-why-bash-logout-wont-run-commands/410534#410534
ここいらへんを見て、少し試行錯誤しました。コンピュータ関係では書いてあることと違う事も結構ある。確かにSIGHUPを無視するnohupというコマンドもあるくらいだから、SIGHUPで良さそうだけど実際には動かなかった。なので動くコードが正本ってことで、自分の環境には適用しました。動かないと話にならないもんね。
というか、正常終了しなくても.bash_logoutが動いてほしいんだけど。
《後記》
trap exit_session EXIT という書き方で一般ユーザーはきちんと.bash_logoutの処理が動いていたんだけれど、rootだとなぜか動かないんだよね。/root/.bash_logoutに設定しているんだけども、rootで端末ぶち切ったときには発動しない。なぜなんだろう…
解決したようです。
trap exit_session EXIT trap exit_session 1 2 3 15
と書けば動作しました。
https://shellscript.sunone.me/signal_and_trap.html
1,2,3,15のシグナルでrootでは引っ掛かってる模様。それなら
trap exit_session 0 1 2 3 15
で良さそうなものだけれど、分けて書いたほうがいいみたいなサイトもあったので結局分けた。
でも、それでもまだ問題が出た。消すだけならいいんだけど、先にも言ったようにhistoryをリダイレクトして他の場所に出力すると、なぜかファイルが空になる。何で履歴が空になるんだろうと不思議に思っていたんだけど、どうやら.bash_logout が少なくとも2回実行されているみたいなのだ。なので1回目のリダイレクトで書き込めても、2回目に空になったhistoryの出力で上書きされて空になる。
bashのバグか、それもそのバージョンだけのbashのバグかわからないけど、場合によっては2回実行される(いつもではない)のは再現している。さらに面倒なことにそこのサーバはユーザーを段階的に踏んで、rootになるようになっていて(まぁ普通はrootでいきなり入れないようにする)、rootになるまで数ユーザーを経ている。なのでSSHクライアントをぶち切った後、各ユーザーの.bash_logoutの処理が走るわけだが、そのせいもあるのかもしれない。
処理的には使っている各ユーザーの処理がスタックされて.bash_logoutが走っているのはわかるのだが、2回走る意味がわからない。設定でそうなっている可能性はあるのだが、そこまで調べたくない。なので
history > /var/log/history_user01`date +%Y%m%d%H%M`.log
を
history >> /var/log/history_user01`date +%Y%m%d%H%M`.log
に変えた。
そうすれば2回目に空の内容を書き込もうとしても、1回目の出力は消えない。やっと解決した感じ。
問題として
・SIGHUPでtrapされない
・rootで実行されない
・.bash_logout が複数回実行される
ということがあったわけだが、
・trapをEXITにする
・trapを1 2 3 15 にする
・historyの出力をリダイレクトする場合、上書きでなく追記にする
でとりあえず解決した。遠い道のりであった…
最後に関しては特定のバージョンのバグぽいので、やらなくていい場合はあると思うけど、やっておいてもたぶん害はないので大丈夫なはず。
Twitterまとめ投稿 2022/07/19 [Twitter]
carbonhydrat@TQyOwjCSivYu8CM 炭酸飲料はアシドーシスにして尿酸を結晶化させる傾向にあったりします。飲まないよりかいいですが07/18 07:46 carbonhydrat@koume_nouka 江川紹子って何かカルト的なものに入ってましたっけ? 猫教とかは無しでw07/18 07:49 carbonhydrat@puririn_prg 単価が合わないので、マネージメントか営業に回されるのが普通だと思いますね。プログラミング続けたいおじさんは結構います。だからプレイングマネージャをしている人もいるし、マネージメント関係をする人が割と足りていないんだと思います。07/18 07:54 carbonhydratそれ見た事かと言いたい人は世の中にたくさんいるので、アホは無視して正解。そもそも子供ができる事自体計画的にできない人は少なくないし、人生にそういうイレギュラーなことがないと思っている人はお子ちゃま。大体は事が起こってから対応するの… https://t.co/HtsGlTSjUV07/18 08:21 carbonhydrat@sakuyozakura_ 元々ライセンス(Pure Java)の問題で、MicrosoftがJavaを使えなくなった経緯があって、Visual J++というソフトからVisual C#というソフトに移行したのです。なのでJav… https://t.co/Ig01BpdkW607/18 08:27 carbonhydrat今のIT関連技術系だけじゃなくて、この業界はずっとそんな感じ。昔ごまんといたCOBOLerは今は少ないし、DBもSQLがそんなに変わっていないので潰しが比較的効くけど、やはりトレンドは変わっているし。ネットワークはIPv6系が浸透… https://t.co/5mIQJ61Nha07/18 08:52 carbonhydrat@beConjuror orz(笑)07/18 08:54 carbonhydrat@fkmintn 事務系だとデスクトップが多いから、ノートを一つ占有するのも大変なのはあると思います。パソコンを使いこなせていない上司としては、経費で自分のところの予算を余分なパソコンで使えるかということなんでしょうね。最悪、テレビ会議用の共有ノートを買って欲しいですが。07/18 09:00 carbonhydratYouTuber嫌いw。昔テレビ見るなという親がいたけれど、Youtubeを見るなという親は少ないだろうな。あんまり時間を見ていると止めるだろうけど。素人が素人動画作って子供が見るという粗悪なコンテンツの流れはキツい。テレビも映画… https://t.co/xOAbgkIMzy07/18 09:04 carbonhydratRT @rootport: Q. なぜ国語を勉強する必要があるんですか?うちら日本人だし日本語は普通にできるんですが? A. インターネッツを使ってみると、日本語の難しさが分かりますよ〓「書いてあることが読めない人」「書いてないことを読み取ってしまう人」が驚くほどたくさんいま…07/18 09:23 carbonhydratRT @5ducks5: 〓〓を離れる予定がある方はご自身の食に対するストレス耐性を知っておくとよいかも知れません。試しに合わせ調味料を使わない完全自炊生活+マクドナルドだけで2週間くらい生活してみて下さい。選択肢が多く便利で快適な〓〓の食文化でストレス発散してた人は、海外でわ…07/18 09:25 carbonhydrat公立中学は学力格差大きいよね。高一ぐらいの学力と小六以下の学力の人が一緒に授業受けているっておかしすぎる。学力別のクラス割にしようとすると、公立なのに差別ガーとかいう人が必ず出てくるのでできないし。 https://t.co/ZAwKl7i2Ar07/18 09:30 carbonhydratRT @TERRAZI: 霊感商法がまた問題になっているけど、上岡龍太郎が「霊媒師みたいなのをテレビに出すことによって『市民権を得た』とか『認知された』と勘違いする。テレビとしては非常に危険」と激怒していたのを思い出す。探偵ナイトスクープのような番組でそこまで怒らんでも、と思っ…07/18 09:31 carbonhydratRT @tekina_osamu: 統一教会問題がここまで世間から注目された理由のひとつは、狼狽したり論点をずらしたりしている連中の関係が、ジグソーパズルのように繋がってきた「スッキリ感」にあると思う。「ああ、そういうことだったのか」と。07/18 09:32 carbonhydrat円安が終わって、OSでIntelマシンがサポートされなくなったら買い替えよう。個人事業主じゃなから、そうポンポンと買い換えられんのよね。M4ぐらいになったら買おうかな。 https://t.co/mnEcwlWOnM07/18 09:36 carbonhydratRT @toubennbenn: この1週間ちょっとで、みんな分かったはず。 「統一教会と安倍さん(や自民党)なんて、関係ないよー」 って言った人(やテレビ番組)は、 最も信用してはならない人間だと。 #もう安倍友コメンテーターはいらない07/18 09:37 carbonhydrat@TQyOwjCSivYu8CM すみません。今調べてきてわかったんですが、炭酸で体液が酸性になると思っていました。でも、それより糖分の入った飲み物が悪いみたいです。ただ炭酸飲料は大抵甘いので、避けた方がよろしいかと思います。お茶… https://t.co/QvgMWn6Rnw07/18 10:16 carbonhydratタイで見かけた「日本人にだけ読めないフォント」に脳が混乱 “謎の日本語”に「平行世界に紛れ込んだかと」 https://t.co/ob8R7LijSH @itm_nlab アルファベット縦書きというのも日本しかやらないことだし、非常に混乱するw07/18 13:54 carbonhydratRT @hitetsugisou: 今のヤングは知らないだろうけど、飯星景子さんという女優がいましてね。20代のころ統一教会に入信して広告塔にされたんですよ。お父さんは読売新聞記者だった飯干晃一さんで、教会と徹底的に闘い娘を奪回したんです。ちなみに、氏は「仁義なき戦い」の原作者…07/18 13:56 carbonhydrat死者に鞭打つとか言われますが、悪いことをした人は以前から叩かれているので、死んだからどうということはないことが多いです。日本は死んだ人はみんな仏様で、悪行もチャラみたいな傾向があるので、死んだから美化されるとかは害でしかないです。… https://t.co/DZlyuwxXYq07/18 14:12 carbonhydrat江川紹子さんを攻撃するネトウヨにリプライしたら消された。ネトウヨはデマを流した上、それをなだめようとするとすぐブロックする。やはり論理的にもクズ。07/18 15:24 carbonhydratRT @Rkpb_R: 何度も言うけど「去る者追わず」という言葉は100%正しいです。去る者を追えば追うほど、去る者に執着すればするほど、去る者に依存すればするほど、傷つき不幸になる。大切にするのは「大切にしてくれる人」だけでいいです。07/18 15:27 carbonhydratRT @tacowasabi0141: ネトウヨ「立憲にも統一教会に関係がある議員がいるがそいつらも排除されてもいいんだな」 ↑これ全く構わんよな。 つか党派制全開で、自民のためなら日本かなんかどうでいいって思考のネトウヨらしいわ。 所属が何処だろうが統一みたいなやべーカル…07/18 15:33 carbonhydratRT @M16A_hayabusa: 韓国がムチャクチャ大嫌いなネトウヨが、 韓国のカルト教団である統一教会を、 ムチャクチャかばうって本当に気持ち悪いんですけど。07/18 15:34 carbonhydratRT @chidaisan: 票のためならプライドを捨てて、問題のあるカルト宗教様に媚びまくっちゃう自民党の議員が、いざとなった時、この国を他国に売らないはずがないわな。これで「保守」とか名乗って、実際には、日本というサタンの国から韓国にお金を流しているわけでしょう。騙されてい…07/18 15:34 carbonhydratMicrosoftはいつもやらかすが、嘘はあまり言わなかった気がするんだけど。最初Windows10でずっと続くと言った時、ウソでしょうと思ったけど実際嘘であった。 https://t.co/xAPOiyFL2G07/18 15:42 carbonhydrat今までよりかロリコンの変態が入り込む可能性が高まった。絶対変な事件が起こるぞこりゃ。 https://t.co/ScXx2EE8ZQ07/18 15:44 carbonhydratRT @mas__yamazaki: これ、前からこの番組の司会者の行動に着目している人なら気づいている通り、どう見ても「たまたま」じゃない。 恐らく事前にNHK上層部から「何々については触れるな」とお達しがあり、司会者は番組中に無理やりその指示に従っている。だから会話の流れ…07/18 15:48 carbonhydratRT @MacopeninSUTABA: これは凄い✨ 2022年版のミクシィの技術研修資料。アプリ開発からデータベース、テスト、セキュリティーといった分野まで動画付きで解説されている。 このクオリティーが全て「無料」。 こちらにまとめています〓 https://t.c…07/18 15:49 carbonhydratRT @tks: #分解のススメ 100均分解専門家のプロの犯行すぎるwww こういうイヤホンづくりにRISC,RISC-Vが使われているのがすごく面白い https://t.co/Wcs2AoojrA07/18 18:09 carbonhydratRT @masaki_kito: 今朝は、私は出演せず有田さん一人の回でしたが、かえって番組の精度が高まって良かったと思います。この話は我々統一教会問題を追及する弁護士にとっては常識でもありますが、統一教会本体への捜査がなされなかったことが安倍元首相の銃撃につながったという重み…07/18 18:09 carbonhydratTwitterではネトウヨが根も葉もないデマを流しているんだな。根拠のない中傷はほとんどネトウヨの仕業と思っていい。反右翼はファクトに基づいて叩くが、右翼は平気で嘘をつく。そんなに犬みたいな忠誠さをしても、おこぼれに与れないやつばかりなんだろうけど、そこまでする訳がわからん07/18 19:46 carbonhydratRT @ppsh41_1945: 岸田首相が内閣改造を考えているけど、統一教会と無関係な人間を除外したら第二次岸田内閣の大臣候補がいなくなるって凄まじいな。 自民党がいかに統一教会とズブズブであるかが分かるし、自民党と悪質カルト宗教の濃密な関係をこれまで放置してきた日本の報道…07/18 20:46 carbonhydratRT @ShinHori1: 一般論として、三浦瑠麗氏の文章は「A派もB派も、どっちもどっち」と言っておきながら、実際にはA派だけ叩いてB派についてはほぼ放置...という論法が見受けられます。07/18 20:49 carbonhydratRT @hiroshimilano: 日本中政治に無関心、政治の話はタブー、カルトの話はタブーとか、みんなでがやがやお笑い番組やアイドルの話だけして過ごしていた20年間に政治とカルトがえらいことになっていたのが発覚して、今まで無関心だった人にも「え、なに、ヤバいの?」ってなって…07/18 21:02 carbonhydratRT @chounamoul: 安倍の政治ってクソだったよね、国葬とかありえないよねという政策批評や風刺の川柳すら「冒涜だ!」みたいな宗教じみた非難で弾圧しようとする空気、ふつうに怖すぎるわ。「冒涜」って「神聖なもの、清浄なものをおかし、けがすこと」だよ。安倍さんが神聖にして清…07/18 21:03
2022-07-19 05:01
コメント(0)