LoginSignup
35
45

More than 3 years have passed since last update.

Mac PC の管理に使えるターミナルコマンド

Last updated at Posted at 2019-06-02

研究室のPCやサーバの管理を引き継ぐに当たって、必要になりそうなコマンドの使い方やPCの設定について簡単にまとめておきます。内輪向けに作ったメモでしたが、他所でも役に立てばと思い公開します。

この記事では以下の項目についてまとめました。

  • PCの使用状況
  • アカウントの管理
  • パーミッションの設定
  • ソフトウェアのアップデート
  • SSH関連
  • ネットワークの状態

各項目について簡単な使い方を字引き的に紹介するので、より詳細な内容を知りたい場合は別途調べてください。

使用環境:Mac OSX Mavericks~Sierra です。


現在のPCの状態を見る

自分一人のパソコンでは気になりませんが、共用のコンピュータやサーバでは計算リソース
等をめぐって、他のユーザーの使用状況が気になることがあります。
ここでは、コンピュータの使用状況を調べるときに役立つコマンドを紹介します。

現在Login しているユーザ−を見る

ログインしているユーザーを表示するコマンドはwhousersfingerなどがあります。

whousersは、/var/run/utmpx (バイナリファイル)に書かれているログイン情報を表示します。
このファイルを更新しないプログラムを用いていると、ログインしていても表示されません。

% who

ログイン履歴を見る

オプションで数字nをつけると、最近のn件を表示できます。

% last -10

PC の使用状態を見る

% top

表示順は、デフォルトではPIDの順番に表示されますが、oを押した後にkeyを入力してreturn を押せば、指定した項目でソートできます。
また、オプション-oでソートする項目を選択することもできます。例えば、cpu使用率でソートしたければ、

% top -o cpu

ストレージの仕様状況を見る

パーティションごとのサイズや使用量、空容量を集計して表示します。

% df -h

ディレクトリやファイルのサイズを表示する

ディレクトリやファイルを指定すると、そのディレクトリの下にあるファイルやサブディレクトリについてサイズを集計します。
何も指定しなければ、カレントディレクトリについてサイズが計算されます。

% du -H directory_name

オプション
-h bibyte(1024単位)で表示
-H Byte(1000単位)で表示


アカウントの管理

コンピュータの管理者の大きな仕事の一つとして、ユーザーのアカウント管理があります。
ここでは、ターミナルからアカウント設定を確認・変更する方法を紹介します。

ユーザー情報を見る

% id user_name

パスワードを変更する

% passwd user_name

自分のパスワードを変えるときは、ユーザー名は不要です。
パスワードの再発行など、他のユーザーのパスワードを変更するときはsudoが必要です。

dscl

Mac ではユーザーやグループなどの情報はディレクトリ構造のデータベースになっており、そのディレクトリ参照・編集のためのツールとして、Directory Service command line utility; dscl コマンドが用意されています。

dsclコマンドの基本的なオプション:
-list  ディレクトリ下のサブディレクトリをリストアップする
-read  ディレクトリ内を表示する
-create 新しいグループ、ユーザー、属性などを作成する
-append 属性に値を追加する
-change 値を変更する
-delete ディレクトリや属性、値を削除する

ユーザーやグループをリストアップする

% dscl . -list /Users
% dscl . -list /Groups

さらに、PrimaryGroupIDなどのキーを指定すると、その情報も表示されます。

% dscl . -list /Users PrimaryGroupID

個々のユーザーやグループの情報を表示する

ユーザーやグループ個々の情報を調べるときは、-readオプションを使います。

% dscl . -read /Users/user_name

UniqueIDなど複数のキーを指定して表示することもできます。

% dscl . -read /Users/user_name UniqueID

アカウントの設定変更

ユーザーIDを変更する

-changeオプションで値を変更できます。
以下は101 から102に変更するときの例です。

% sudo dscl . -change /Users/user_name UniqueID 101 102

ユーザーをグループに所属させる

% sudo dscl . -append /Groups/new_group GroupMembership user_name

ユーザーをグループから削除する

% sudo dscl . -delete /Groups/new_group GroupMembership user_name

グループを作る

-createオプションで新しいグループを作り、
-appendオプションでPrimaryGroupIDを指定します。
以下はIDを101に設定する例です。

% sudo dscl . -create /Groups/new_group
% sudo dscl . -append /Groups/new_group PrimaryGroupID 101

Permissionの設定

ファイルやディレクトリにはそれぞれ、権限が設定されています。
ユーザーは権限のないファイルやディレクトリにはアクセスできません。
ここでは権限の確認や変更の方法について紹介します。

lsコマンドで見ると、例えば次のように表示されます。
先頭の-rw-r--r--@などと書いてる列はアクセス権限を表しています。この意味は後で説明します。
user1と書いてある列は所有ユーザー名を、 staffと書いてある列は所有グループ名を表示しています。

% ls -l

-rw-r--r--@   1 user1  staff    43B 12  5  2017 alpha.txt
-rw-r--r--@   1 user1  staff    59B 12  5  2017 detect.log
drwxr-xr-x  123 user1  staff   4.1K  8 24  2019 data
drwx------    4 user1  staff   136B 12 24  2018 himitsu
drwxrwxrwx+   8 user1  staff   272B 10 30  2018 Public
lrwxr-xr-x@   1 user1  staff    34B  3  6 06:42 test -> /Users/user1/work/script/test
drwx------+ 348 user1  staff    12K  4 11 12:41 work

では、-rw-r--r--の部分の読み方を説明します。

先頭の文字はファイル種別を表し、
d ディレクトリ
- ファイル
l シンボリックリンク

rwxは左から、所有者、所有グループ、その他のユーザーに与えられた権限を表している。-となっているところは、該当する権限が与えられていません。
それぞれの文字の意味は以下のとおりです。
r 読み取り
w 書き込み
x 実行

したがって、-rw-r--r--は所有者は読み書き可能、所有グループに含まれるユーザーは読み取り可能、その他のユーザーは読み取り可能です。

ファイルやディレクトリのpermissionを変更する

% chmod ooo file_name

oooには左から順に、所有者、所有グループ、その他のユーザ権限を表す数字が入ります。
数字は0から7までで、2進数にしたときのrwxのON/OFFを表現します。

数値 モード 数値 モード
0 --- 4 r--
1 --x 5 r-x
2 -w- 6 rw-
3 -wx 7 rwx

例えば、全てのユーザーが自由に使えるようにしたい場合

% chmod 777 file_name

自分以外のユーザーには見られないようにする場合

% chmod 700 file_name

ファイルやディレクトリの所有者を変更する

% chown user_name file_name

オプション
-R ディレクトリの中身も再帰的に変更します

ファイルやディレクトリのグループを変更する

% chgrp group_name file_name

オプション
-R ディレクトリの中身も再帰的に変更します

ファイルやディレクトリを変更した後は、思ったように変更されているか確認します。

% ls -l

管理者権限での編集

root の/binなどのファイルやディレクトリは安全のために書き込みが制限されているところが多いです。ソフトウェアのインストールやコンピュータの設定などのために、アクセスが制限されているディレクトリやファイルを編集する必要があるときは、コンピュータの管理者がsudoを使って行います。

個々のユーザーのホームディレクトリ以下のファイルやディレクトリでは、他のユーザーに見られたくない、いじられたくないものの権限の範囲をrwx --- ---のように絞ります。管理者はsudoを使えば見ることが可能ですが、信用に関わる問題なので、無断で覗いたりしない方がいいでしょう。


コンピュータやソフトウェアについて

ここから、コンピュータのハードウェアやOS、ソフトウェアについて情報を調べたり、アップデートしたりする方法を紹介します。

Software の情報を見る

デスクトップからは、画面左上のリンゴ(アップルメニュー)をクリックして、「このMacについて」を選択すればOSのバージョンやハードウェアの仕様などを確認できます。
それぞれのアプリについては、メニューバーのアプリの名前をクリックし、「<App名>について」を選択すればバージョンなどを見られます。

ターミナルからソフトウェアのバージョンを確認する場合は、オプションに-v-versionなどをつけると表示されるものもあります。

Mac OS のバージョンを確認する

% sw_vers

ProductName:    Mac OS X
ProductVersion: 10.12.6
BuildVersion:   16G1815

system_profilerを使うと、もう少し詳しい情報を見られます。

% system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: macOS 10.12.6 (16G1815)
      Kernel Version: Darwin 16.7.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: ccc
      User Name: uuu (uuu)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Disabled
      Time since boot: 7 days 17:17

system_profilerで表示できるデータタイプを知りたいときは、

% system_profiler -listDataTypes

unameでもOSやCPU情報を表示できます。

% uname -a

オプション
-a 全てのシステム情報
-m マシンタイプ
-n ノード名
-p CPU
-r OSのリリース
-s OS名
-v OSのバージョン


XCODEのバージョンを見る

% xcodebuild -version

Xcode 9.2
Build version 9C40b

Softwareをアップデートする

ふつうApple のApp Store でアプリをインストールしたり、更新したりしますが、 CUIからでもソフトウェアをアップデートできます。

アップデートを確認する場合

% softwareupdate --list

全てのアップデートをインストールする場合

% softwareupdate -ia

個別にインストールする場合

% softwareupdate -i app_name

Hardware の情報を見る

% system_profiler SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: Mac Pro
      Model Identifier: MacPro6,1
      Processor Name: 8-Core Intel Xeon E5
      Processor Speed: 3 GHz
      Number of Processors: 1
      Total Number of Cores: 8
      L2 Cache (per Core): 256 KB
      L3 Cache: 25 MB
      Memory: 64 GB
      Boot ROM Version: www
      SMC Version (system): xxx
      Serial Number (system): yyy
      Hardware UUID: zzz

外付けディスクの取り外し

ターミナルから外付けディスクをunmountするには、

% diskutil unmount /Volumes/XXX

SSH

ここでは、SSHでログインしてサーバーを使用する方法を紹介します。

Macにリモートでログインする

% ssh user_name@host

オプションに大文字の-Xまたは-Yをつけると、X11の転送が使えます。

% ssh -X user_name@host

ただし、sshd_config でX11Forwarding(X11の転送)がyesに設定されていないと、オプションに-XYをつけても転送されません。
Mac のデフォルトではOFFになっているので、サーバー管理者は最初に設定が必要です。
特にOSのヴァージョンアップをした後などは設定がデフォルトに戻っている場合があるので要注意。

ファイルを転送する

ローカルからリモートへ送る場合

% scp 送り元path user_name@host:送り先path

リモートからローカルへ送る場合

% scp user_name@host:送り元path 送り先path

オプション
-r ディレクトリを転送
-p タイムスタンプやパーミッションを保持
-C 通信を圧縮


ディレクトリの中身を転送・同期する

rsyncはリモートに限らず、ローカルでの転送・同期にも使えます。
リモートの場合はpathの前に「user_name@host:」をつけます。

% rsync 送り元path 送り先path

オプション
-a パーミッションなどを保持して転送(-rlptgoDと同じ)
-u 追加、更新されたファイルのみコピーする
-v 転送状況を表示
-z 通信を圧縮

SSHの再起動

sshd_config を編集して設定変更した場合、SSHを再起動すると変更が反映されます。

% sudo launchctl stop com.openssh.sshd

ネットワークの状態を見る

ここでは、ネットワークの状態、IPアドレスなどを調べる方法について紹介します。

ドメイン名からIPアドレスを探す

% nslookup domain

ドメイン情報を検索する

ドメイン名やIPアドレスから、ドメイン情報を検索します。

% whois ip_address

ポートスキャン

ncコマンドはいろいろな使い方ができるが、ここではポートスキャンの方法を紹介します。
IPアドレスのポートが開いているか確認します。
ポート番号は1-100のようにして、範囲を指定して一気に実行することもできます。

% nc -z ip_address port_No

オプション
-z ハンドシェイクだけする。
-u UDPを使って通信する(デフォルトではTCP)。
-v 冗長表示(Verbose)

接続確認

リモートへの接続を確認します。
ICMパケットを送信して、送り先がエコーを返し、パケットが帰って来れば導通しています。

% ping ip_addreess

オプション
-c 試行回数を指定する

試行回数を指定しなかった場合は、control+cで終了します。


接続状況の確認

ネットワークの接続状態を表示します。

% netstat 

オプション
-t TCP通信のみ表示
-u UDP通信のみ表示

ネットワークインターフェイスの状態を表示

自分のネットワークインターフェイスの設定状況を表示します。自分のIPアドレスもわかります。
設定の変更もifconfigコマンドで可能です。

% ifconfig

コマンドについて調べる

ターミナルで使えるコマンドについて、使い方や引数などを知りたいときにネット検索してもいいですが、ターミナルで調べる方法もあるので最後に紹介しておきます。

manコマンドを使うと、各コマンドのマニュアルを読むことができます。
マニュアルから抜けるときはqを入力します。

% man command_name
35
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
45