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

LinuC102試験の学習(シェル、スクリプト、およびデータ管理)③SQLデータ管理

テーブルの照会をする。

SELECT 列名 FROM テーブル名 WHERE 検索条件;
「AND(かつ)」や「OR(または)」を使用することで、検索条件を複数指定することもできます。

SQL(Structured Query Language)は、RDB(リレーショナルデータベース)を処理する言語です。RDBは現在広く使用されているデータベースの方式で、データはテーブルと呼ばれるものに格納されます。テーブルは列(フィールド)と行(レコード)で構成されています。また、テーブルを表と考えた読み方として、列を「カラム(column)」、行を「ロウ(row)」とそのまま英語で呼ぶこともあります。
RDBを管理するシステムをRDBMS(Relational DataBase Management System)といい、代表的なものにMySQLやPostgreSQLなどがあります。

ORDER BY=レコードの検索結果を特定の順序で並び替えます。
6.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

プロセスを一括で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する方法

pgrepxargs を使えば一括に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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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.conflsで見当たらなかったので,/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>

これで再起動したところ,無事中華フォント現象から脱却できていた.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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|| というエイリアスもあるみたいです。

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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でこういう時はどう書く?】 を参照して欲しい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む