ためすう
sudo su - について
2018-06-09目的
$ sudo su -
というコマンドをよく使うのですが、- が何者なのか分からないので調査しました。
sudoについて
他のユーザーとしてコマンドを実行します
(以下 本より引用)
sudoコマンドで、どのユーザーとしてどのようなコマンドが実行可能かなどの制約条件は、設定ファイルsudoers(/etcや/usr/local/etcディレクトリにあります)にあらかじめ設定されていなければなりません
suについて
別のユーザー権限に切り替えます
(以下 man コマンドより引用)
-l Simulate a full login. The environment is discarded except for HOME, SHELL, PATH, TERM, and
USER. HOME and SHELL are modified as above. USER is set to the target login. PATH is set to
``/bin:/usr/bin''. TERM is imported from your current environment. The invoked shell is the
target login's, and su will change directory to the target login's home directory.
- (no letter) The same as -l.
要するに
$ su -
で root 権限に切り替えて、そのユーザーでログインしたのと 同じ状態にします
実験 (Vagrant環境にて)
環境変数を引き継がない場合
$ export MYABC=999
$ echo $MYABC
999
$ sudo su -
# echo $MYABC
環境変数を引き継ぐ場合
$ export MYABC=999
$ echo $MYABC
999
$ sudo su root
# echo $MYABC
999
root 権限で環境変数が引き継がれていないことが確認できます。
参考
- [UNIXコマンド 本]()
jekyll で下書きする
2018-06-06目的
jekyll で下書きをする方法を調べました。
方法
_drafts
ディレクトリを作成します。_drafts
の中にa-test.md
ファイルを作成します。
表示を確認するには、--drafts
オプションを利用します。
$ bundle exec jekyll s --drafts
参考
watch コマンドを使ってみる
2018-06-03目的
並列で複数走らせるプログラムがあり、その監視のため watch コマンドを使いました。
方法
$ watch -n 10 "ps aux | grep php"
Every 10.0s: ps aux | grep php
vagrant 22355 0.0 0.5 109048 2744 pts/0 S+ 10:26 0:00 watch -n 10 ps aux | grep php
vagrant 22356 0.0 0.2 106076 1292 pts/0 S+ 10:26 0:00 sh -c ps aux | grep php
vagrant 22358 0.0 0.1 103336 916 pts/0 S+ 10:26 0:00 grep php
これで 10秒ごとにコマンドを実行してくれます。
参考URL
rsync を使ってみる
2018-06-02目的
ブログ記事をアップロードする時に ftp を使用していたのですが
下記の課題がありました。
- ファイルを全部コピーするため、時間がかかる
- サーバーに 1 度アップロードされたファイルは、残り続ける
この課題を解消するため、 rsync コマンドを使ってみました。
以下、構成です。
自分の PC -> レンタルサーバー
注意
レンタルサーバーでも rsync が利用できる必要があります。
また、ssh で接続できる必要があります。
解決策
自分の PC で下記コマンドを実行します。
$ rsync -auv -e "ssh -p [ポート番号]" ./ [ユーザー名]@[サーバー]:[ファイルパス]
- [ポート番号]
- [ユーザー名]
- [サーバー]
- [ファイルパス]
は自分の環境に合わせて変更してください。
例ですが、下記のようになります。
$ rsync -auv --delete -e "ssh -p 22" ./ user@example.com:~/
次に
このコマンドを使うのは特定端末からの想定ですが
複数人、複数端末から利用する場合
古いソースで同期しないようにする仕組みが必要になりそうです。
また、現在は秘密鍵の設定をしていないので、都度パスワードを入力しているので
秘密鍵を設定したいと思います。
参考
curl で post する
2018-05-27目的
api を作成する機会がありました。
動作確認のためターミナルから api を実行する方法を調べました。
方法
url パラメータを POST する
$ curl http://localhost:9000/hoge -F "url=http://fugafuga.jp"
DELETE メソッドでアクセス
$ curl http://localhost:9000/hoge/1 -X DELETE
PUT メソッドで url パラメータを送る
$ curl http://localhost:9000/hoge/1 -X PUT -F "url=http://fugafuga.com"
(以下 man コマンドより引用)
-d, --data <data>
(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and
presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to
-F, --form.
-X, --request <command>
(HTTP) Specifies a custom request method to use when communicating with the HTTP server. The specified request method will be used instead of the
method otherwise used (which defaults to GET). Read the HTTP 1.1 specification for details and explanations. Common additional HTTP requests include
PUT and DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and more.
scp で帯域制限する
2018-05-26目的
scp コマンドを使って、容量の大きいファイルをダウンロードしたり、アップロードしたりすると
ネットワークが重くなったり、途中で途切れたりすることがありました。
転送速度を帯域制限することにより制御します。
方法
例えば、 毎秒 5MB までを転送したいときは、
5 (MB) = 5 * 1024 * 1024 * 8 = 41943040 (bit) = 41943.040 (Kbit)
scp コマンドの l オプションを利用します。
(以下 man コマンドより引用)
-l limit
Limits the used bandwidth, specified in Kbit/s.
全体のコマンドは下記のようになります。
- 手元の PC から index.html ファイルを domain.com のサーバーの /home/admin ディレクトリへ配置します。
- identity_file は domain.com のサーバーへ入る秘密鍵です。
$ scp -P 22 -i identity_file -l 41943 index.html admin@domain.com:/home/admin/
参考
Mac のターミナルから Finder を開く
2018-05-21目的
Mac のターミナルから、 Finder を開く方法を調べました。
方法
open コマンドを利用します。
下記例では、ホームディレクトリを Finder で開きます。
$ open ~
参考URL
Markdown の記法
2018-05-20目的
マークダウンの記法を忘れてしまうことがあるので
よく使うものをまとめました。
マークダウンの記法
見出しについて
# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
見出し1
見出し2
見出し3
見出し4
見出し5
箇条書きについて
* 箇条書き1
* 箇条書き2
* 箇条書き3
- 箇条書き1
- 箇条書き2
- 箇条書き3
番号リストについて
1. 番号1
2. 番号2
- 番号1
- 番号2
ハイパーリンクについて
[Google](https://www.google.co.jp/?gws_rd=ssl)
コードについて
`echo $test`
echo $test
引用について
> 引用1
> 引用2
引用1 引用2
テーブルについて
| 見出し1 | 見出し2 | 見出し3 |
| ------- | :-----: | ------: |
| item1 | center | right |
| item2 | abc | def |
見出し1 | 見出し2 | 見出し3 |
---|---|---|
item1 | center | right |
item2 | abc | def |
参考URL
MySQL のパスワードを忘れてしまった時にすること
2018-04-15動作確認バージョン
$ mysql --version
mysql Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using EditLine wrapper
目的
MySQL でパスワードを忘れてしまい、どうすることもできなくなったのでログインできるようにします。
手順
MySQL を停止する
$ sudo /etc/init.d/mysql stop
Shutting down MySQL.. SUCCESS!
セーフモードで起動
$ sudo mysqld_safe --skip-grant-tables &
[1] xxxxx
root ユーザーで MySQL に接続する
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.25 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root パスワードを設定する
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
-- root ユーザーに root というパスワードを設定します
mysql> update user set password=PASSWORD("root") where User='root';
mysql> flush privileges;
MySQL を起動する
$ sudo /etc/init.d/mysql stop
Shutting down MySQL..180227 03:29:21 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended
SUCCESS!
[vagrant@localhost ~]$ sudo /etc/init.d/mysql start
Starting MySQL. SUCCESS!
参考URL
MySQL のカラム追加時に追加場所を指定する
2018-04-08動作確認バージョン
$ mysql --version
mysql Ver 14.14 Distrib 5.6.25, for Linux (x86_64) using EditLine wrapper
目的
MySQL 5.6 のカラム追加時に追加場所を指定します
設定する
仮に下記のテーブルがあるとします。
CREATE TABLE `test_table` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`col1` varchar(50) DEFAULT NULL,
`col3` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
カラム追加
mysql> ALTER TABLE test_table ADD col2 varchar(50) DEFAULT NULL AFTER col1;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
確認する
mysql> show create table test_table\G
*************************** 1. row ***************************
Table: test_table
Create Table: CREATE TABLE `test_table` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`col1` varchar(50) DEFAULT NULL,
`col2` varchar(50) DEFAULT NULL,
`col3` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
意図したところにカラムが追加されました。