- 投稿日:2020-03-22T20:50:43+09:00
Linuxのファイルとディレクトリのパーミッションについて
Linux上でのファイルとディレクトリの権限ごとの挙動を忘れがちなのでざっと説明用にまとめてみる。
chmod
で変更するやつ権限のみかた
$ ls -lで、カレントディレクトリにあるファイルやディレクトリの権限を見れる
drwxrwxrwx. 2 core core 4096 Mar 22 11:02 dir -rwxrwxrwx. 1 core core 0 Mar 22 11:02 file一番ひだりの
d
がディレクトリか否かを表してて、
その後ろのrwx
は3文字で1セット。
左から順番に、
所有権のあるユーザの権限、所有権のあるグループに所属するグループの権限、その他のユーザの権限
を表している。
r
は読み
w
は書き
x
は実行
の権限で-rw-r--r--. 1 core core 0 Mar 22 11:05 foo上記のようになっている場合は
foo
というファイルに対しては
core
というユーザがrw
(読み書き)の権限があって、
それ以外のユーザはr
(読み)の権限しかないことを表す。
なお、rootユーザは問答無用ですべての権限を持つ。ファイル
特定のユーザ(グループ)以外には読ませたくないようなファイルや、特定のユーザ(グループ)からしか更新できないようなファイルを作りたいときに使用することが多い。
デフォルトの権限
ターミナルでファイルを作成すると
0644
の権限になるcore@dev ~/work $ touch file core@dev ~/work $ ls -l total 4 -rw-r--r--. 1 core core 0 Mar 22 11:08 file書き込み権限
core@dev ~/work $ chmod 444 ./file core@dev ~/work $ ls -l total 4 -r--r--r--. 1 core core 0 Mar 22 11:08 file core@dev ~/work $ echo "hogehoge" > file -bash: file: Permission denied特定のユーザ以外に書き込みをさせたくないファイルを扱うときに使う。
下手に書き込むと壊れるようなファイルとか。
書き込み権限がないファイルを削除しようとすると警告がでる。core@dev ~/work $ touch file core@dev ~/work $ chmod 400 file core@dev ~/work $ ls -l total 4 -r--------. 1 core core 0 Mar 22 11:20 file core@dev ~/work $ rm file rm: remove write-protected regular empty file 'file'?読み込み権限
core@dev ~/work $ chmod 000 ./file core@dev ~/work $ ls -l total 4 ----------. 1 core core 0 Mar 22 11:08 file core@dev ~/work $ cat file cat: file: Permission denied特定にユーザ以外に読み込みさせたくないファイルを扱うときに使う。
秘匿情報を含む情報を扱うときとか。実行権限
ファイルを実行する権限
スクリプトとかバイナリに使う実行できないようなただのテキストファイルに付与しても意味ない
core@dev ~/work $ echo "hogehoge" > file core@dev ~/work $ chmod 700 ./file core@dev ~/work $ ls -l total 8 -rwx------. 1 core core 9 Mar 22 11:22 file core@dev ~/work $ ./file ./file: line 1: hogehoge: command not foundbashで実行した場合
core@dev ~/work $ echo "echo hogehoge" > file core@dev ~/work $ chmod 700 ./file core@dev ~/work $ ls -l total 8 -rwx------. 1 core core 14 Mar 22 11:22 file core@dev ~/work $ ./file hogehogeターミナルやプロセスとして実行できるように付与することがほとんど
ディレクトリ
デフォルトの権限
core@dev ~/work $ mkdir foo core@dev ~/work $ ls -l total 8 drwxr-xr-x. 2 core core 4096 Mar 22 11:25 fooデフォルトはファイルと違って先頭を除くと
rwxr-xr-x
になるので、ディレクトリの場合は
所有権のあるユーザはrwx
の権限で
それ以外のユーザはr-x
の権限になる書き込み権限
core@dev ~/work $ mkdir foo core@dev ~/work $ ls -l total 8 drwxr-xr-x. 2 core core 4096 Mar 22 11:38 foo core@dev ~/work $ chmod 500 ./foo/ core@dev ~/work $ ls -l total 8 dr-x------. 2 core core 4096 Mar 22 11:38 foo core@dev ~/work $ touch foo/test touch: cannot touch 'foo/test': Permission denied書き込み権限がない場合はディレクトリ以下にファイルを配置できなくなる
ファイル単位ではなくディレクトリ単位で保護したいときに使う。読み込み権限
core@dev ~/work $ mkdir foo core@dev ~/work $ chmod 000 ./foo/ core@dev ~/work $ ls -l foo/ ls: cannot open directory 'foo/': Permission deniedディレクトリにアクセスできないので
ls
などで参照できなくなる実行権限
core@dev ~/work $ mkdir foo core@dev ~/work $ touch foo/bar core@dev ~/work $ chmod 600 ./foo/ core@dev ~/work $ ls -l foo/ ls: cannot access 'foo/bar': Permission denied total 0 -????????? ? ? ? ? ? barディレクトリに実行権限がない場合は、配下のファイルへのアクセス権がなくなる。
そのためファイルの情報自体にアクセスができなくなる。
ファイルの情報にアクセスできず権限が不明なため、読み書きもできなくなる。
ディレクトリへの読み書きの権限はあるので、chmod
でディレクトリの権限を書き換えることはできる。
- 投稿日:2020-03-22T20:01:51+09:00
direnv(linux)
はじめまして
みなさんはじめまして。本日やっと問題解決し、雄叫びをあげましたkyonです。
備忘録として初投稿いたします。
どうぞよろしくお願いいたします。環境
CentOS Linux release 8.1.1911 (Core)
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
Visual Studio Code バージョン: 1.43.1ー
タイトルにもありますとおりlinuxでdirenvを使いたく、以下URLを参考とさせていただき、
参考URL Linuxでdirenvを使う
.envrcファイルを作成し、Railsプロジェクトの /binディレクトリにパスを通すところまですんなりとできましたが、その後ずっとコイツと戦っておりました。Access denied for user 'ENV['MYSQL_DATABASE']'@'localhost' (using password: YES)多分一週間くらい戦ったと思います。
調べれば直接パスワードをdatabase.ymlへ記述すればいいことは知っていましたが、先々のことを考えた結果direnvを使うことにしました。
が、しかしどうしても分からず。。.envrcexport 'DATABASE_USERNAME'="root" export 'DATABASE_PASSWORD'="password" ←mysqlのパスワード。。。。。?
database.ymldefault: &default adapter: mysql2 encoding: utf8mb4 username: ENV['DATABASE_USERNAME'] password: ENV['DATABASE_PASSW0RD']。。。。。。。。??
ただ調べていくうちに.envrcファイルは合ってそうだな、と思っていてdatabase.ymlのusernameとpasswordの書き方がずっと不明でした。
今日ふとdatabase.yml の管理方法いろいろ
こちらのURLに辿り着き、問題解決したと言うことです。問題解決
database.yml には <%= ... %> で Ruby コードを埋め込むことができます。そしてdatabase.ymlを以下のように記述しました。
database.ymldefault: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV['DATABASE_USERNAME'] %> password: <%= ENV['DATABASE_PASSWORD'] %>埋め込んでなかったんですね。
お恥ずかしい。駄文ですが最後まで読んでいただき、ありがとうございました。
これを機に投稿していきたいと思います。
kyonでした。
- 投稿日:2020-03-22T15:51:14+09:00
Docker/Kubernetesなど コマンド一覧
仕事および趣味で利用した、Docker/Kubernetesのコマンドの備忘。
ついでに使わないとすぐ忘れるLinuxなどその他色々コマンドの情報のせます。。Docker
コマンド 概説 例 docker ps 稼働コンテナの一覧表示 実行中:docker ps
終了状態含む:docker ps -adocker images ローカルで保持しているイメージリストを表示 docker rmi [id名] ローカルのイメージを削除 削除できない場合は、 docker rmi [id名] -f で実行する
-f:強制的に削除docker build [-t リポジトリタグ] Dockerfileからイメージのビルド docker pull [コンテナイメージ] コンテナイメージのダウンロード docker run [コンテナイメージ] コンテナイメージを指定して起動 docker run -it [image名] shell コンテナを起動して対話型シェルを実行 docker run -it centos bash docker logs [Container ID] ログ表示 docker hisotry [images ID] イメージへの履歴 docker tag ローカルイメージ名:タグ リモートリポジトリ:タグ名 ローカルリポジトリのイメージをリモートリポジトリ名にタグ付け docker push タグ付けしたリモートリポジトリ名 リモートリポジトリへの登録 docker commit containerID image:tag コンテナイメージの登録 docker start containerID コンテナの開始 docker stop containerID コンテナの停止 docker stop $(docker ps -q) 稼働中の全コンテナの停止 docker network ls コンテナネットワークをリスト表示 docker network inspect [networkID] コンテナネットワークの詳細設定を表示 docker network create [ネットワーク名] コンテナネットワークを新規作成 docker network create mynet1 docker built -t イメージ名:tag名 DockerfileのPATH名 Dockerイメージの作成 docker build --tag mydaemon:0.1 ./Dockerfile Kubernetes
コマンド 概説 docker ps 稼働コンテナの一覧表示 TD TD TD TD Linux
ほぼCent0Sの例です。
Cent0S
コマンド 概説 例 systemctl list-unit-files -t service サービス一覧と自動起動設定の確認 (旧 chkconfig --list) cat /etc/redhat-release バージョン確認 yum list installed yumでインストールされた一覧の確認 nslookup dns(ip) DNSサーバーへの名前解決問い合わせ 参考
Docker reference
https://docs.docker.com/engine/reference/commandline/build/Docker コマンドチートシート
https://qiita.com/wMETAw/items/34ba5c980e2a38e548dbawkコマンド
https://www.atmarkit.co.jp/ait/articles/1706/08/news015.html
- 投稿日:2020-03-22T15:46:59+09:00
【Linux】遺伝統計ソフトPLINKでeQTL解析
はじめに
最近、遺伝統計ソフトのPLINKを使い始めた。
この本を参考にPLINKの使い方を勉強。この本はWindows用に書かれているので、Macでのやり方を備忘録的に書いていく。
今回は、PLINKでeQTL解析をやってみた。参考
PLINKの基本的な使い方、GWAS解析方法は以前に投稿済み
【Linux】遺伝統計ソフトPLINKを使ってみた
【Linux】遺伝統計ソフトPLINKでGWAS使うデータ
bed|bim|fam形式ファイル
- SNP_QC.bed
- SNP_QC.bim
- SNP_QC.fam
SNPをフィルタリング済みのファイル
表現型ファイル
- Exp_BLK.txt
BLK遺伝子の発現量データ
eQTL解析
eQTL解析では、遺伝子発現量という量的形質に対して解析するため、線形解析を行う。
使うコマンド一覧。
--pheno
:GWASに使う表現型ファイル(今回はExp_BLK.txt)を入力
--linear
:線形回帰を実施
--ci 0.95
:95%信頼区間を出力GWAS(線形解析)$ ./plink --bfile SNP_QC --out SNP_QC_Exp_BLK --pheno Exp_BLK.txt --linear --ci 0.95作業ディレクトリにSNP_QC_Exp_BLK.assoc.linearという名前のファイルが出力されているのを確認して、テキストエディタで開く。
1列目が染色体番号、2列目がSNP ID、3列目が染色体位置、12列目がp値となっている。AWKによる要素の抽出
GWAS結果から、AWKコマンドで「染色体番号」、「SNP ID」、「染色体位置」、「p値」の列を取り出す。
AWKコマンドで、入力ファイルをSNP_QC_Exp_BLK.assoc.linear、出力ファイルをテキストファイルとしたSNP_QC_Exp_BLK.assoc.linear.P.txtとする。
AWKでは' 'で区切って、この中にコマンドを書いて実行する。
{print $2"\t"$1"\t"$3"\t"$12}
によって、
「2列目[SNP ID] 1列目[染色体番号] 3列目[染色体位置] 4列目[p値]」というデータフレームになる。
"\t"
はタブで区切るというコマンド。
>
によって指定したテキストファイルとして出力する。AWKコマンドでGWAS結果から要素を抽出し、テキストファイルを出力$ awk '{print $2"\t"$1"\t"$3"\t"$12}' SNP_QC_Exp_BLK.assoc.linear > SNP_QC_Exp_BLK.assoc.linear.P.txtこのGWAS結果を使ってマンハッタンプロットを描く。
マンハッタンプロットの描画
SNPの特定
eQTL効果を示したSNPを抜き出してみる。
AWKでSNPを抽出awk '$4<=10^-12 {print $0}' 1KG_EUR_QC_Exp_BLK.assoc.linear.P.txt出力
rs13255193 8 11309192 4.539e-13 rs13257831 8 11332964 6.545e-13 rs2736345 8 11352485 1.707e-14 rs1478898 8 11395079 6.882e-16 rs2244894 8 11448659 1.497e-13 rs2244648 8 11450422 2.068e-14 rs13273172 8 11461111 1.188e-14p値が最小のSNPはrs1478898であった。
- 投稿日:2020-03-22T11:52:00+09:00
CentOS Linux 8 でネットワークインターフェースの IPv6 を無効にする
概要
- NetworkManager のコマンドラインツール nmcli でネットワークインターフェースの IPv6 を無効にする
今回の環境
- CentOS Linux 8
# cat /etc/centos-release CentOS Linux release 8.1.1911 (Core)設定前の状態を確認する
現在は IPv6 が有効な状態。
ifconfig コマンドで inet6 エントリーが表示されている場合は、デバイスで IPv6 が有効になっている。# nmcli connection show NAME UUID TYPE DEVICE eth0 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ethernet eth0# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX broadcast XXX.XXX.XXX.XXX inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x0<global> inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link> ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet) RX packets 1856709 bytes 121862479 (116.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 53733 bytes 8848173 (8.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0IPv6 を無効にする
nmcli connection modify コマンドでネットワークインターフェース eth0 の IPv6 を無効にする。
ipv6.method に disabled を指定。
ipv6.addresses と ipv6.gateway に無効な値を指定。# nmcli connection modify eth0 ipv6.method "disabled" ipv6.addresses "" ipv6.gateway ""nmcli connection show コマンドで設定値を確認する。
# nmcli connection show eth0 | grep ipv6 ipv6.method: disabled ipv6.dns: -- ipv6.dns-search: -- ipv6.dns-options: -- ipv6.dns-priority: 0 ipv6.addresses: -- ipv6.gateway: -- ipv6.routes: -- ipv6.route-metric: -1 ipv6.route-table: 0 (unspec) ipv6.routing-rules: -- ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: 0 (disabled) ipv6.addr-gen-mode: stable-privacy ipv6.dhcp-duid: -- ipv6.dhcp-send-hostname: yes ipv6.dhcp-hostname: -- ipv6.token: --nmcli connection up コマンドでネットワーク接続を再起動して設定を反映する。
# nmcli connection up eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)ipv6.addresses と ipv6.gateway を指定しない場合はエラーが発生
Red Hat Enterprise Linux 8 の公式ドキュメントには ipv6.method だけの指定方法が書かれていたが、今回の環境では ipv6.addresses と ipv6.gateway の値を設定しない場合は以下のようなエラーが発生していた。
# nmcli connection modify eth0 ipv6.method "disabled" Error: Failed to modify connection 'eth0': ipv6.addresses: this property is not allowed for 'method=disabled' # nmcli connection modify eth0 ipv6.method "disabled" ipv6.addresses "" Error: Failed to modify connection 'eth0': ipv6.gateway: gateway cannot be set if there are no addresses configured設定後の状態を確認する
ifconfig コマンドで inet6 エントリーが表示されない場合は、このネットワークインターフェースで IPv6 が無効になっている。
# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX broadcast XXX.XXX.XXX.XXX ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet) RX packets 1885535 bytes 123804373 (118.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 56110 bytes 9257206 (8.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0disable_ipv6 ファイルに 1 が書き込まれている場合は、このネットワークインターフェースで IPv6 が無効になっている。
# cat /proc/sys/net/ipv6/conf/eth0/disable_ipv6 1参考資料
- 投稿日:2020-03-22T10:25:37+09:00
【Linux】遺伝統計ソフトPLINKでGWAS
はじめに
最近、遺伝統計ソフトのPLINKを使い始めた。
この本を参考にPLINKの使い方を勉強。この本はWindows用に書かれているので、Macでのやり方を備忘録的に書いていく。
今回は、PLINKでゲノムワイド関連解析(GWAS)を行う。参考
PLINKの基本的な使い方は以前に投稿済み
【Linux】遺伝統計ソフトPLINKを使ってみた使うデータ
bed|bim|fam形式ファイル
- SNP.bed
- SNP.bim
- SNP.fam
表現型ファイル
- phenotype1.txt
このファイルは、ケースコントロールのデータファイルで、ケースは2、コントロールは1となっていて、それぞれにファミリーID、サンプルIDが割り当てられていて、SNP.famファイルのファミリーID、サンプルIDと紐付いている。
これらのファイルを作業ディレクトリに格納する。
PLINKを起動
作業ディレクトリを指定して、
作業ディレクトリの指定$ cd /作業ディレクトリのパス/PLINK(PLINK実行ファイル)を作業ディレクトリに移動して起動する。
PLINK起動$ ./plink
SNPのフィルタリング
--bfile
で、SNPファイル(bed|bim|fam形式)を読み込んで、--make-bed
でフィルタリング後のデータを新しいbed|bim|fam形式ファイルとして作成。
--out
で出力するファイルの名前をSNP_QCに指定する。今回は以下の条件のSNPを除外する。
--maf 0.05
:マイナーアレル頻度が5%以下(通常のGWASでは1%あるいは0.5%以下が一般的)
--hwe 0.000001
:ハーディー・ワインベルグ平衡の検定でp値が10^-6以下
--indep-pairwise 100 5 0.8
:連鎖平衡係数r2値が0.8以上SNPの除去$ ./plink --bfile SNP --out SNP_QC --maf 0.05 --hwe 0.000001 --indep-pairwise 100 5 0.8 --make-bed実行結果PLINK v1.90b6.16 64-bit (19 Feb 2020) www.cog-genomics.org/plink/1.9/ (C) 2005-2020 Shaun Purcell, Christopher Chang GNU General Public License v3 Logging to SNP_QC.log. Options in effect: --bfile SNP --hwe 0.000001 --indep-pairwise 100 5 0.8 --maf 0.05 --make-bed --out SNP_QC 16384 MB RAM detected; reserving 8192 MB for main workspace. 8830185 variants loaded from .bim file. 381 people (178 males, 203 females) loaded from .fam. 381 phenotype values loaded from .fam. Using 1 thread (no multithreaded calculations invoked). Before main variant filters, 381 founders and 0 nonfounders present. Calculating allele frequencies... done. --hwe: 14399 variants removed due to Hardy-Weinberg exact test. 2692226 variants removed due to minor allele threshold(s) (--maf/--max-maf/--mac/--max-mac). 6123560 variants and 381 people pass filters and QC. Among remaining phenotypes, 0 are cases and 381 are controls. --make-bed to SNP_QC.bed + SNP_QC.bim + SNP_QC.fam ... done. Pruned 366094 variants from chromosome 1, leaving 103214. Pruned 403320 variants from chromosome 2, leaving 106161. Pruned 339719 variants from chromosome 3, leaving 85861. Pruned 353504 variants from chromosome 4, leaving 86916. Pruned 310443 variants from chromosome 5, leaving 79003. Pruned 322217 variants from chromosome 6, leaving 81854. Pruned 285601 variants from chromosome 7, leaving 83237. Pruned 264127 variants from chromosome 8, leaving 71155. Pruned 208275 variants from chromosome 9, leaving 76275. Pruned 245016 variants from chromosome 10, leaving 67270. Pruned 241219 variants from chromosome 11, leaving 63223. Pruned 226971 variants from chromosome 12, leaving 62436. Pruned 177571 variants from chromosome 13, leaving 45339. Pruned 154730 variants from chromosome 14, leaving 44160. Pruned 134104 variants from chromosome 15, leaving 45299. Pruned 142197 variants from chromosome 16, leaving 50213. Pruned 124358 variants from chromosome 17, leaving 41954. Pruned 134574 variants from chromosome 18, leaving 38435. Pruned 105678 variants from chromosome 19, leaving 37131. Pruned 102672 variants from chromosome 20, leaving 31013. Pruned 68848 variants from chromosome 21, leaving 23361. Pruned 63204 variants from chromosome 22, leaving 25608. Pruning complete. 4774442 of 6123560 variants removed. Marker lists written to SNP_QC.prune.in and SNP_QC.prune.out .作業ディレクトリに以下のファイルが出力されているのを確認する。
- SNP_QC.bed
- SNP_QC.bim
- SNP_QC.fam
ゲノムワイド関連解析(GWAS)
以下のコマンドを使ってGWAS解析を行う。
--pheno
:GWASに使う表現型ファイル(今回はphenotype1.txt)を入力
--logistic
:ロジスティック回帰を実施
--ci 0.95
:95%信頼区間を出力GWAS(ロジスティック回帰分析)$ ./plink --bfile SNP_QC --out SNP_QC_Pheno1 --pheno phenotype1.txt --logistic --ci 0.95GWASの実行結果PLINK v1.90b6.16 64-bit (19 Feb 2020) www.cog-genomics.org/plink/1.9/ (C) 2005-2020 Shaun Purcell, Christopher Chang GNU General Public License v3 Logging to SNP_QC_Pheno1.log. Options in effect: --bfile SNP_QC --ci 0.95 --logistic --out SNP_QC_Pheno1 --pheno phenotype1.txt 16384 MB RAM detected; reserving 8192 MB for main workspace. 6123560 variants loaded from .bim file. 381 people (178 males, 203 females) loaded from .fam. 381 phenotype values present after --pheno. Using 1 thread (no multithreaded calculations invoked). Before main variant filters, 381 founders and 0 nonfounders present. Calculating allele frequencies... done. 6123560 variants and 381 people pass filters and QC. Among remaining phenotypes, 188 are cases and 193 are controls. Writing logistic model association results to SNP_QC_Pheno1.assoc.logistic ... done.作業ディレクトリにSNP_QC_Pheno1.assoc.logisticという名前のファイルが出力されているのを確認して、テキストエディタで開く。
1列目が染色体番号、2列目がSNP ID、3列目が染色体位置、12列目がp値となっている。AWKによる要素の抽出
GWAS結果から、AWKコマンドで「染色体番号」、「SNP ID」、「染色体位置」、「p値」の列を取り出す。
AWKコマンドで、入力ファイルをSNP_QC_Pheno1.assoc.logistic、出力ファイルをテキストファイルとしたSNP_QC_Pheno1.assoc.logistic.P.txtとする。
AWKでは' 'で区切って、この中にコマンドを書いて実行する。
{print $2"\t"$1"\t"$3"\t"$12}
によって、
「2列目[SNP ID] 1列目[染色体番号] 3列目[染色体位置] 4列目[p値]」というデータフレームになる。
"\t"
はタブで区切るというコマンド。
>
によって指定したテキストファイルとして出力する。AWKコマンドでGWAS結果から要素を抽出し、テキストファイルを出力$ awk '{print $2"\t"$1"\t"$3"\t"$12}' SNP_QC_Pheno1.assoc.logistic > SNP_QC_Pheno1.assoc.logistic.P.txt出力ファイルをCSVファイルにすることもできる。
AWKコマンドでGWAS結果から要素を抽出し、CSVファイルを出力$ awk '{print $2"\t"$1"\t"$3"\t"$12}' SNP_QC_Pheno1.assoc.logistic > SNP_QC_Pheno1.assoc.logistic.P.csvこのGWAS結果を使ってマンハッタンプロットを描く。
マンハッタンプロットの書き方は以前に投稿済みのため、今回は省略。参考
Rでのマンハッタンプロットの書き方も以前に投稿済み
【R】GWAS結果でマンハッタンプロットを描いてみた
【R】GWAS結果でマンハッタンプロットを描いてみた2
- 投稿日:2020-03-22T10:08:03+09:00
CentOS Linux のバージョンを調べるコマンドやファイル
概要
- CentOS Linux や Linux カーネルのバージョンをコマンドやファイルの中身を確認して調べる
/etc/centos-release
$ cat /etc/centos-release CentOS Linux release 8.1.1911 (Core)/etc/centos-release-upstream
$ cat /etc/centos-release-upstream Derived from Red Hat Enterprise Linux 8.1 (Source)/etc/os-release
$ cat /etc/os-release NAME="CentOS Linux" VERSION="8 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="8" PLATFORM_ID="platform:el8" PRETTY_NAME="CentOS Linux 8 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:8" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-8" CENTOS_MANTISBT_PROJECT_VERSION="8" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="8"/etc/system-release-cpe
$ cat /etc/system-release-cpe cpe:/o:centos:centos:8/etc/ 以下に release が付くファイル
このあたりのファイルにバージョン情報が載っている。シンボリックリンクされているのも多い。
$ ls -l /etc/ | grep release -rw-r--r-- 1 root root 38 3月 13 04:15 centos-release -rw-r--r-- 1 root root 51 3月 13 04:15 centos-release-upstream lrwxrwxrwx 1 root root 21 3月 13 04:15 os-release -> ../usr/lib/os-release lrwxrwxrwx 1 root root 14 3月 13 04:15 redhat-release -> centos-release lrwxrwxrwx 1 root root 14 3月 13 04:15 system-release -> centos-release -rw-r--r--. 1 root root 23 3月 13 04:15 system-release-cpeuname: カーネル情報
$ uname -m x86_64 $ uname -o GNU/Linux $ uname -r 4.18.0-147.5.1.el8_1.x86_64 $ uname -s Linux $ uname -v #1 SMP Wed Feb 5 02:00:39 UTC 2020 $ uname -morsv Linux 4.18.0-147.5.1.el8_1.x86_64 #1 SMP Wed Feb 5 02:00:39 UTC 2020 x86_64 GNU/Linux $ uname -a Linux foo.example.com 4.18.0-147.5.1.el8_1.x86_64 #1 SMP Wed Feb 5 02:00:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linuxlsb_release: LSB (Linux Standard Base) 情報
$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 8.1.1911 (Core) Release: 8.1.1911 Codename: Corelsb_release コマンドは redhat-lsb-core パッケージに入っているので必要に応じて dnf install redhat-lsb-core などでインストールする。
hostnamectl
$ hostnamectl Static hostname: foo.example.com Icon name: computer-vm Chassis: vm Machine ID: 11112222333344445555666677778888 Boot ID: ffffeeeeddddccccbbbbaaaa00009999 Virtualization: kvm Operating System: CentOS Linux 8 (Core) CPE OS Name: cpe:/o:centos:centos:8 Kernel: Linux 4.18.0-147.5.1.el8_1.x86_64 Architecture: x86-64参考資料
- 投稿日:2020-03-22T01:22:09+09:00
Docker を AWS にインストール
200321
注意点
なぜか動かない、という状況は AWS のセキュリティグループの設定が原因かもしれない。AWS の準備
EC2 をたてるまでの手順は、ここでは説明しない。注意が必要なのはセキュリティグループの設定で、デフォルトでは SSH 以外はすべてブロックされる。
AWS に docker をインストール
sudo yum update
sudo yum install -y docker
正常にインストールできたか確認できる。バージョンは 1.21.5 のようだ。
docker info
sudo がなくてもいいようにする
sudo service docker start
sudo usermod -a -G docker ec2-user
docker-compose インストール
docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
パーミッション変更が必要
'sudo chmod +x /usr/local/bin/docker-compose'
'docker-compose --version'Django のデプロイ
Docker を使った本番デプロイ
AWS 上でディレクトリ構造などを作ったりする必要はない。そんなことをやっていると手間ばかりかかってミスも連発する。ローカルの開発環境にも Docker を入れて、ここで完成したものをそのまま丸ごとコピーするのが正しい。
セキュリティグループの追加
EC2 のインスタンスを普通に立てただけでは SSH しかできない設定となってる。セキュリティグループに、HTTP プロトコル(ポート 80 または 8000)を通す設定をしておかないと絶対につながらず、時間を溶かすので注意が必要。
ローカルで開発したプロジェクトのデプロイ
ローカル環境で動作確認した django プロジェクトは、ディレクトリごと zip にしてホストに転送する。配置したい場所で unzip すると、そのままファイルができるので、あとは docker-comopose up すれば立ち上がる。
おわり