ためすう

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. 番号1
  2. 番号2

ハイパーリンクについて

[Google](https://www.google.co.jp/?gws_rd=ssl)

Google

コードについて

`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

Markdown記法 チートシート

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)

意図したところにカラムが追加されました。

参考URL