- 投稿日:2020-08-02T22:43:45+09:00
LinuC102試験の学習(シェル、スクリプト、およびデータ管理)③SQLデータ管理
テーブルの照会をする。
SELECT 列名 FROM テーブル名 WHERE 検索条件;
「AND(かつ)」や「OR(または)」を使用することで、検索条件を複数指定することもできます。SQL(Structured Query Language)は、RDB(リレーショナルデータベース)を処理する言語です。RDBは現在広く使用されているデータベースの方式で、データはテーブルと呼ばれるものに格納されます。テーブルは列(フィールド)と行(レコード)で構成されています。また、テーブルを表と考えた読み方として、列を「カラム(column)」、行を「ロウ(row)」とそのまま英語で呼ぶこともあります。
RDBを管理するシステムをRDBMS(Relational DataBase Management System)といい、代表的なものにMySQLやPostgreSQLなどがあります。
- 投稿日:2020-08-02T19:52:45+09:00
プロセスを一括でkillする方法
chromedriverのプロセスがたくさん溜まってしまいましたが、
プロセス番号を使って順番にkillコマンドでkillすると非常に効率が悪いです。$ ps aux|grep chromedriver yusaku 8013 0.0 0.1 4360484 12024 s001 S 1:01PM 0:00.22 /Users/yusaku/chromedriver --port=53472 yusaku 2932 0.0 0.1 4360484 11992 s001 S 12:25AM 0:00.25 /Users/yusaku/chromedriver --port=64392 yusaku 2880 0.0 0.1 4360484 11988 s001 S 12:25AM 0:00.26 /Users/yusaku/chromedriver --port=64302 yusaku 2512 0.0 0.1 4360484 12256 s001 S 12:07AM 0:00.28 /Users/yusaku/chromedriver --port=63331 yusaku 99432 0.0 0.1 4360620 12268 s001 S 8:08PM 0:00.36 /Users/yusaku/chromedriver --port=56561 yusaku 99261 0.0 0.1 4360620 12252 s001 S 7:59PM 0:00.48 /Users/yusaku/chromedriver --port=56221 yusaku 98284 0.0 0.1 4360620 12236 s001 S 土05PM 0:00.60 /Users/yusaku/chromedriver --port=55684 yusaku 98202 0.0 0.1 4360620 12240 s001 S 土05PM 0:00.43 /Users/yusaku/chromedriver --port=55487 yusaku 98120 0.0 0.1 4360620 12256 s001 S 土05PM 0:00.44 /Users/yusaku/chromedriver --port=55307 yusaku 98031 0.0 0.1 4360620 12320 s001 S 土05PM 0:00.33 /Users/yusaku/chromedriver --port=55113 yusaku 97976 0.0 0.1 4360484 12268 s001 S 土05PM 0:00.35 /Users/yusaku/chromedriver --port=55082 yusaku 97891 0.0 0.1 4360620 12540 s001 S 土05PM 0:00.51 /Users/yusaku/chromedriver --port=54923 yusaku 97807 0.0 0.1 4360620 12464 s001 S 土05PM 0:00.44 /Users/yusaku/chromedriver --port=54755 yusaku 97014 0.0 0.1 4360484 12004 s001 S 土04PM 0:00.34 /Users/yusaku/chromedriver --port=53365 yusaku 96928 0.0 0.1 4360484 11992 s001 S 土04PM 0:00.31 /Users/yusaku/chromedriver --port=53308 yusaku 96873 0.0 0.1 4360484 12000 s001 S 土04PM 0:00.31 /Users/yusaku/chromedriver --port=53169 yusaku 96811 0.0 0.1 4360484 12016 s001 S 土04PM 0:00.34 /Users/yusaku/chromedriver --port=53027 yusaku 95623 0.0 0.1 4360484 11984 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=52319 yusaku 95584 0.0 0.1 4360484 12012 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=52297 yusaku 95533 0.0 0.1 4360484 12012 ?? S 土03PM 0:00.34 /Users/yusaku/chromedriver --port=52151 yusaku 95495 0.0 0.1 4360484 12000 ?? S 土03PM 0:00.33 /Users/yusaku/chromedriver --port=52133 yusaku 95445 0.0 0.1 4360484 11988 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=51998 yusaku 95405 0.0 0.1 4360484 12000 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51979 yusaku 95340 0.0 0.1 4360484 11976 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=51817 yusaku 95280 0.0 0.1 4360484 11984 ?? S 土03PM 0:00.35 /Users/yusaku/chromedriver --port=51679 yusaku 95214 0.0 0.1 4360484 12004 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51621 yusaku 95160 0.0 0.1 4360484 11996 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51589 yusaku 95068 0.0 0.1 4360484 11984 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51404 yusaku 95026 0.0 0.1 4360484 12008 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51385 yusaku 94964 0.0 0.1 4360484 11972 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=51310 yusaku 94891 0.0 0.1 4360484 12008 ?? S 土03PM 0:00.31 /Users/yusaku/chromedriver --port=51265 yusaku 94795 0.0 0.1 4368688 12228 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=50551 yusaku 94743 0.0 0.1 4360484 12280 ?? S 土03PM 0:00.33 /Users/yusaku/chromedriver --port=50411 yusaku 94627 0.0 0.1 4360484 12272 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=50249 yusaku 94565 0.0 0.1 4360484 12284 ?? S 土03PM 0:00.33 /Users/yusaku/chromedriver --port=50088 yusaku 94508 0.0 0.1 4360484 12260 ?? S 土03PM 0:00.34 /Users/yusaku/chromedriver --port=49947 yusaku 94016 0.0 0.1 4360484 12244 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=49324 yusaku 93963 0.0 0.1 4360484 12248 ?? S 土03PM 0:00.33 /Users/yusaku/chromedriver --port=49179 yusaku 93910 0.0 0.1 4360484 12204 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=65531 yusaku 93859 0.0 0.1 4360484 12232 ?? S 土03PM 0:00.37 /Users/yusaku/chromedriver --port=65390 yusaku 93808 0.0 0.1 4360484 12220 ?? S 土03PM 0:00.37 /Users/yusaku/chromedriver --port=65259 yusaku 93758 0.0 0.1 4360484 12212 ?? S 土03PM 0:00.32 /Users/yusaku/chromedriver --port=65231 yusaku 93607 0.0 0.1 4360484 12236 ?? S 土03PM 0:00.36 /Users/yusaku/chromedriver --port=64962 yusaku 11837 0.0 0.0 4277992 1008 s001 S+ 7:36PM 0:00.00 grep chromedriver yusaku 11749 0.0 0.2 4360484 13808 s001 S 7:30PM 0:00.06 /Users/yusaku/chromedriver --port=58743 yusaku 11636 0.0 0.2 4360484 13836 s001 S 7:28PM 0:00.07 /Users/yusaku/chromedriver --port=58678一括でkillする方法
pgrep
とxargs
を使えば一括にkill出来る。$ pgrep chromedriver| xargs kill -9 $ $ ps aux|grep chromedriver yusaku 11934 0.0 0.0 4267752 1008 s001 S+ 7:48PM 0:00.01 grep chromedriver
- 投稿日:2020-08-02T18:32:25+09:00
Linuxでアップデートしたら中華フォントになった件について(修正方法)
与太話
巷では中国本土で使われる漢字(簡体字)の字形が表示される現象を「中華フォント現象」と呼ぶらしい.最も簡体字を利用する中国語利用者にとっては「なんのこっちゃ」というこの現象名なのだが,この表示現象をひと括りの単語として認識するまで時間がかかってしまった.そして,この現象を「問題」として認識するのはおそらく日本語利用者しかいないだろう.
先日,久々にOSのアップデートをしようと
sudo dnf update
(筆者はFedoraを利用.Ubuntuでいうsudo apt-get update
と同義)をかけて再起動したところ,ログイン画面から中華フォント現象が起きていた.もちろんOSの設定言語は「日本語」であるにもかかわらず!これはめんどくさいことに多くの時間を費やすなと思いながら,早速改善策を調べる.
解決策
/etc/fonts
以下の設定(etc
はOSの設定ファイルが格納されているディレクトリ):
- コマンド
ls /etc/fonts/
を実行したところ,conf.d
ディレクトリとfonts.conf
の設定ファイルがある.一度,fonts.conf
を開いてみると,X Window開発者のKeith Packard氏のコメントが書かれてあった.<!-- DO NOT EDIT THIS FILE. IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. LOCAL CHANGES BELONG IN 'local.conf'. The intent of this standard configuration file is to be adequate for most environments. If you have a reasonably normal environment and have found problems with this configuration, they are probably things that others will also want fixed. Please submit any problems to the fontconfig bugzilla system located at fontconfig.org Note that the normal 'make install' procedure for fontconfig is to replace any existing fonts.conf file with the new version. Place any local customizations in local.conf which this file references. Keith Packard -->つまり,ここに直接書き込んではだめということがわかる.その代わりにlocal.confに設定を書き込めと.でも,
local.conf
はls
で見当たらなかったので,/etc/fonts/
下で作成した.# vi /etc/fonts/local.confフォントファミリー "serif", "sans-serif", "monospace" それぞれ,Noto * フォントファミリを読み込ませるように以下のように記述した.記述方法はfontconfigのユーザードキュメントを参考にする.
local.conf<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>serif</family> <prefer> <family>Noto Serif</family> </prefer> </alias> <alias> <family>sans-serif</family> <prefer> <family>Noto Sans</family> <family>Noto Sans CJK JP</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Noto Sans Mono CJK JP</family> </prefer> </alias> </fontconfig>これで再起動したところ,無事中華フォント現象から脱却できていた.
- 投稿日:2020-08-02T11:21:45+09:00
Rubyでシステムコマンドの実行
Rubyを書いてる時にスクリプト内で、システムコマンドを実行したくなったので調べてみました。
Kernel#system
最も、シンプルな書き方です。
system("ls") # => true標準出力にコマンドの実行結果が返却されます。
メソッドの戻り値は以下の通り
true
コマンド成功時false
コマンド失敗時nil
コマンドがない時Kernel#`
コマンドの実行結果を戻り値で欲しい時に使います。
`ls` # => "Applications\nLibrary\nSystem\nUsers\nVolumes\nbin\ncores\ndev\netc\nhome\nopt\nprivate\nsbin\ntmp\nusr\nvar\n"戻り値は文字列型で返ってくるみたいですね。
%x||
というエイリアスもあるみたいです。参考
- 投稿日:2020-08-02T09:30:16+09:00
cronの起動時刻をランダムに書き替えるワンライナー
小ネタである。
前提知識
bashでは、環境変数
$RANDOM
を用いることで、0~32767 の数字をランダムに得ることができる。例えば、0~3 の数字をランダムに表示するには、剰余記号
%
を組み合わせて次のようにする。0~3の数字をランダムに表示echo $((RANDOM % 4))5~59 の数字ならこうだ。
5~59の数字をランダムに表示echo $((5 + RANDOM % 55))この辺の説明は【シェルスクリプトでランダムにアレをやる】 の方がずっと分かり易かったので、そちらを参照していただきたい。
cronの時刻フィールドを書き替えるには
本題。
最終行に次の cron が定義されているとする。00 2 * * * /home/mindwood/foo.sh > /dev/null 2>&1午前2時に起動する設定だが、これを、午前0時5分~午前3時59分の起動とし、幅を持たせたい。
その上で毎時ジャスト(午前1時、午前2時・・・)は避けたい。書き替えるワンライナーはこうだ。
H=$((RANDOM%4));M=$((5+RANDOM%55));sed -i -e '$s/^[0-9]\+ [0-9]\+/'$M' '$H'/' /var/spool/cron/crontabs/root例えば次のように更新される。
43 1 * * * /home/mindwood/foo.sh > /dev/null 2>&1この時刻が気に入らなければ、何度でもやり直せる。
なお、
sed
の$
は最後の行を表す。
sed
についても、詳しくは 【sedでこういう時はどう書く?】 を参照して欲しい。