- 投稿日:2019-02-28T22:46:19+09:00
google-fluentdのログが容量食いまくってた
概要
GCEで稼働しているサーバ(CentOS7)のディスクが妙に減っているので、見てみたところgoogle-fluentdが悪さしていた。
ディスクの容量確認
rootボリュームとして50GBのPersistent Diskをアタッチしている。
Apache+Tomcatが稼働していて、Tomcatとかのログローテも入れてるのに妙に容量食っている。$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 50G 20G 31G 40% / devtmpfs 3.6G 0 3.6G 0% /dev tmpfs 3.6G 0 3.6G 0% /dev/shm tmpfs 3.6G 337M 3.3G 10% /runどこが容量を食っているか調べる
あれ?どこもたいして容量食ってなくない?っていうか全然数字が合わなくない?
# du -sh /* 0 /bin 88M /boot 0 /dev 34M /etc 221M /home 0 /lib 0 /lib64 0 /media 0 /mnt 1.6G /opt 0 /proc 200K /root 337M /run 0 /sbin 0 /srv 0 /sys 96K /tmp 2.0G /usr 1007M /var
原因を調べる
ls
でも出てこないし、どういうことだ・・・と思って、ファイルディスクリプタを確認。
google-fluentd
お前か!# ls -al /proc/*/fd/* | grep deleted l-wx------ 1 root root 64 2月 23 15:31 /proc/6733/fd/7 -> /var/log/google-fluentd/google-fluentd.log.1 (deleted)対応方法
google-fluentd
を再起動# systemctl restart google-fluentd
解決
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 50G 4.8G 46G 10% / devtmpfs 3.6G 0 3.6G 0% /dev tmpfs 3.6G 0 3.6G 0% /dev/shm tmpfs 3.6G 337M 3.3G 10% /run tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup tmpfs 732M 0 732M 0% /run/user/1007 tmpfs 732M 0 732M 0% /run/user/1002 tmpfs 732M 0 732M 0% /run/user/0
- 投稿日:2019-02-28T19:44:07+09:00
Webサーバ起動
よく使うものでよく忘れるのでメモ
起動
httpd,mysqlなどを行う
■CentOS7以上
systemctl start サービス名.service
■CentOS7以下
service サービス名 start
停止
■CentOS7以上
systemctl stop サービス名.service
■CentOS7以下
service サービス名 stop
再起動
■CentOS7以上
systemctl restart サービス名.service
■CentOS7以下
service サービス名 restart
その他
service httpd restart
または
/etc/init.d/httpd restart再起動コマンドが効かない場合、以下のコマンドである可能性があります。(CentOSのバージョンの違いなど)
apachectl restart
apache2ctl restart
- 投稿日:2019-02-28T18:59:25+09:00
gdbでC/C++のデバッグ
Segmentation fault (コアダンプ)
LinuxでCやC++を書いていると必ずといっていいほど悩まされるこのメッセージ
エラーの原因がterminalに直接出力されないので、コードをトレースしなければなりません。しかし、
gdb
というツールを使うことによってその面倒な作業をしなくて済むようになるのです。gdbとは
https://ja.wikipedia.org/wiki/GNU%E3%83%87%E3%83%90%E3%83%83%E3%82%AC
GNUデバッガ(単にGDBとも)は、GNUソフトウェア・システムで動く標準のデバッガである。 これは、多くのUnix系システムで動作可能な移植性の高いデバッガであり、Ada、C言語、C++、FORTRAN、FreeBASICといったプログラミング言語に対応している。
eclipseやVisual StudioとかのIDEでは標準でデバッガが使えるようになっていますが、Linuxでも同じようにCやC++のデバッグが使えるというわけです。
使い方
Lambda:11 Em:1.01 ARI:0 Lambda:11 Em:1.02 ARI:0.290903 Segmentation fault (コアダンプ)現在私はクラスタリング(機械学習手法の一種)を行うプログラムを書いているのですが、動かしているとこのようになってしまいました。
includeしているファイルを含めると結構な行数ですので、コードだけを見てどこが原因なのか突き止めるのは大変そうです...ここでgdbの登場です。
まずコンパイルオプションに「-g」を付けてコンパイルします。
g++ efcma_main_2d-Gaussian-2clusters.cxx -g -o多くのLinuxではデフォルトCoreDump機能を無効にしてあるため、有効にします。
ulimit -c unlimited (生成するCoreのサイズを制限しない)プログラムを実行します。
./a.out ... (省略) ... Lambda:11 Em:1.01 ARI:0 Lambda:11 Em:1.02 ARI:0.290903 Segmentation fault (コアダンプ)ここでカレントディレクトリを見ると、「core」と名のついたファイルが生成されているはずです。
このcoreをGDBでデバッグしてみます。gdb ./a.out core GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./a.out...done. [New LWP 10366] Core was generated by `./a.out'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00005599dc02eccb in Hcm::set_crispMembership (this=0x7ffcf0375ea0) at hcm.cxx:159 159 CrispMembership[max_index][k]=1.0;ここで一番下にhcm.cxxのここがいけないよ
といったことが書いてあります。もっと詳しく見てみたいのでbacktraceします。
(gdb) backtrace #0 0x00005599dc02eccb in Hcm::set_crispMembership (this=0x7ffcf0375ea0) at hcm.cxx:159 #1 0x00005599dc03c300 in main () at qfcma_main_user_knowledge.cxx:112main関数の原因箇所を詳しく見たいので#1を指定します。
(gdb)frame 1 warning: Source file is more recent than executable. 112 test.set_crispMembership();これでどの関数が悪いのかが分かりました。
(さらに詳しい原因は現在調査中です...)gdbについてのさらに詳しい記事
- 投稿日:2019-02-28T14:15:53+09:00
私がデスクトップ環境として Budgie を愛用している理由
1. はじめに
現在,Linux のデスクトップ環境は GNOME と KDE を筆頭に,GNOME から派生した MATE や Cinnamon。また,独立系として Xfce や Pantheon など,多種多様なものが存在しています。その中でも,筆者は Budgie を愛用しています。この記事は,筆者がこれまでに使用してきたデスクトップ環境と比較しながら,Budgie を愛用する理由を記述したものです。
続く 2 章では,Budgie の概要について記述します。3 章では,Budgie の魅力について記述します。4 章では,Budgie の欠点について記述します。5 章では,本記事のまとめを記述します。2. Budgie の概要
Budgie は,Solus Project によって開発されているオープンソースのデスクトップ環境です。現在は,ツールキットとして GTK+3 を採用しており,GTK+4 への移行が公式で発表されています。
3. Budgie の魅力
筆者が思う,Budgie の魅力を以下に示します。
(1) シンプルでエレガントなデザイン
(2) 必要十分な設定項目
(3) カスタマイズ可能なパネル
全体の印象としては,GNOME・Cinnamon・Pantheon の良い部分を抽出したようなデスクトップ環境です。
4. Budgie の欠点
筆者が思う,Budgie の欠点を以下に示します。
(1) 技術が枯れきっていない
GNOME や KDE などに比べると,Budgie は新しいデスクトップ環境なので,少なからずバグが残っています。また,開発を行っている Solus Project は,小規模なチームです。そのため,枯れきるまでに時間がかかることが予想されます。(2) 拡張性が低い
GNOME Shell Extensions や Cinnamon Spices のように,ユーザーが開発した Applet を配布・インストールする手段が無いので拡張性に劣る。※ Budgie Applets という snap アプリを用いることで非公式の Applet をインストール出来るが,ユーザーが配布できる機能は無い
5. おわりに
4 章で述べた通り,Budgie は完璧なデスクトップ環境ではありません。しかし,その欠点を帳消しにするほどの魅力があると筆者は感じています。また,今後のアップデートで,より良いデスクトップ環境になると思います。最後に,この記事が Budgie を知るきっかけになれば幸いです。
参照情報
- 投稿日:2019-02-28T00:06:25+09:00
source ~/.zshrc_historyは絶対に実行してはいけない(戒め
あるある
# ivm .zshrc # dlssjksdklsdfkjlllklld打ち損じたり、考え事をしていて不意に意味不明な文字をターミナルに叩いてしまう。
ついやってしまうが、上キーでコマンド履歴を漁る度にこいつらが出てくる。ううむ。どうすりゃいいんだ...
みた感じ~/.zshrc_historyを直接編集して該当部分を消せばいいらしい。
vimで編集して保存する。あれ?
反映されない。なんで?(殺意
じゃあ...
source ~/.zshrc_historyで反映っと...
# source ~/.zshrc_history
!?
# source ~/.zsh_history /bin/zsh root のログインシェルを変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください ログインシェル [/bin/zsh]: n chsh: 警告: n は存在しません /root/.zsh_history:source:4: そのようなファイルやディレクトリはありません: ./.zshrc /root/.zsh_history:source:5: そのようなファイルやディレクトリはありません: ./.vimrc E: 不正な操作 ibus-anthy パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージはアップグレードされます: ibus-anthy アップグレード: 1 個、新規インストール: 0 個、削除: 0 個、保留: 1514 個。 739 kB 中 0 B のアーカイブを取得する必要があります。 この操作後に追加で 0 B のディスク容量が消費されます。 /usr/share/apt-listchanges/apt_listchanges.py:540: FutureWarning: Possible nested set at position 25 email_re = re.compile(r'([a-zA-Z0-9_\+\-\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)') changelog を読み込んでいます... 完了 ^CE: 子プロセス /usr/sbin/dpkg-preconfigure --apt || true がシグナル 2 を受け取りました。 E: Failure running script /usr/sbin/dpkg-preconfigure --apt || true /root/.zsh_history:cd:9: そのようなファイルやディレクトリはありません: etc/apt Loading internal logger. Log::Log4perl recommended for better logging Reading '/root/.cpan/Metadata' ^C^C!??!!????!??!??!?!???!?!??!?!!??
次々と身に覚えのないコマンドが勝手に実行されます。恐怖です。祈るような気持ちでctrl-Cを連打します。原因
よく考えなくても当然です。
sourceは.zsh_historyに記録されているコマンドを頭から読み込んでかたっぱしから実行しているのです。# head .zsh_history chsh -s /bin/zsh echo $SHELL chsh source ./.zshrc source ./.vimrc vim apt ibus-anthy apt install --fix-missing ibus-anthy cd etc/apt vim apt.conf.dなんて恐ろしいんだ...
教訓
当時、齢15の少年だった僕はsourceコマンドを勝手に「設定を更新/反映してくれるコマンド」だと勘違いしていました。zshrcを更新するノリでうっかり実行してしまったのです。
僕みたいなうっかりが、もしかしたらいるかもしれないので教訓としてここに残しておきます。_人人人人人人人人人人人人人人人人人人人人人人人人_
> source ~/.zshrc_historyは絶対に実行してはいけない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄(もしかしてLinuxあるあるじゃないのか...?)