20191001のLinuxに関する記事は6件です。

Oracle Autonomous Linuxをハックする Part1

1. Oracle Autonomous Linuxの発表

2019年9月に開催された「Oracle OpenWorld 2019」で、驚いたトピックの1つが「Oracle Autonomous Linuxの発表」だ。Autonomousが近年Oracle社のキーメッセージになっているとはといえ、まさかLinuxだとは思わなかった。

いずれの記事も説明は抽象的だが、おそらく以下のようなスペックだと思われる。そこで実際に触って機能をあきらかにしたい。

  • Oracle Autonomous LinuxはOracle Cloud Infrastructureで提供
  • 自動RPMパッケージ・アップデート
  • 自動セキュリティパッチ適用
  • Kspliceによるゼロ・ダウンタイム・アップグレード

2. Oracle Autonomous Linuxを作成する

Oracle Autonomous Linuxインスタンスを作成してみよう。マニュアルはOracle Cloud Infrastructure ComputeのMarketplaceページにある(要Oracle Cloud Infrastructureアカウント)。

ただし、現時点のマニュアルは難解でタイポも散見される。今後の機能向上とともに、マニュアルも改善されることを期待したい。

愚痴モードで言うなら、IAMの構文に2箇所も間違いがあり、構文エラーを直すのに時間がかかった。使わせないために、わざとやっているのではと思うほど。

Version: Autonomous-Linux-2019.09.07
Release Date: 9/7/2019

2-1. 設定の流れ

マニュアルに書かれている設定手順は以下のとおり。

1. Notifications(通知)のセットアップ
 - トピックの作成
 - トピックにemailアドレスの関連付け

2. ダイナミック・グループのセットアップ
 - ダイナミック・グループの作成
 - ダイナミック・グループにポリシー割り当て

3. Oracle Autonomous Linuxインスタンスの作成
 - Oracle Autonomous Linuxイメージを使用してインスタンスを作成
 - al-configコマンドでインスタンスとトピックを関連付け
 

2-2. Notifications(通知)のセットアップ

メッセージング・サービスのNotifications(Amazon SQS相当)をセットアップする。

  1. OCI管理コンソールのメニューから[Application Integration]-[Notifications]を選択する。
  2. [Create Topic]をクリックしてトピックを作成する。今回は「AL_Notifications」という名前で作成。
  3. 作成したトピックをクリックして詳細を表示する。
  4. [Create Subscription]をクリックしてサブスクリプションを作成する。今回は 通知先emailアドレスを設定する。email以外にSlackやPagerDuty、URLも指定できる。
  5. サブスクリプションを作成すると、通知先のアドレスにメールが送信される。送信されたメール内のリンクをクリックして有効化する。有効化すると、ステータスがPENDINGからACTIVEに変わる。

2-3. ダイナミック・グループのセットアップ

Oracle Autonomous Linuxインスタンスが存在するコンパートメント内からメッセージを通知できるように、ダイナミック・グループとポリシーを構成する。

  1. OCI管理コンソールから[Identity]-[Dynamic Groups]を選択する。
  2. 以下の内容でダイナミック・グループを作成する。
項目
NAME AL_Notifications_comp1_grp
DESCRIPTION for Autonomous Linux Notifications
Matching Rules ALL {instance.compartment.id = '<compartment OCID>'}

3.OCI管理コンソールから[Identity]-[Policies]を選択する。
4.以下の内容でポリシーを作成する。

項目
NAME AL_Notifications_pol
DESCRIPTION for Autonomous Linux Notifications
Policy Statements Allow dynamic-group <dynamic group name> to use ons-topics in compartment <topic compartment name> where request.permission='ONS_TOPIC_PUBLISH'

2-4. Oracle Autonomous Linuxインスタンスの作成

インスタンスの作成方法は、通常のComputeインスタンスと同じだ。異なる点はOracle Imagesから"Oracle Autonomous Linux"を選択すること。

  1. Oracle Imagesから選択する。
    autolinux01.PNG

  2. 一番下までスクロールして、Acceptをチェックし、Select Imageをクリックする。
    autolinux02.PNG

  3. 作成が完了したら、次のコマンドを実行してトピックを関連付ける。インスタンス作成時のUser Dataで指定してもよい。

$ sudo al-config -T <topic OCID> 

3. Oracle Autonomous Linuxの設定を調べる

まずはOSの設定を確認する。ディストリビューションのバージョンや起動しているサービスなど、基本的な設定を確認する。

3-1. OS基本設定

ベースはOracle Linux 7.7で、UEK Release 5カーネルを使用している。

$ cat /etc/oracle-release
Oracle Linux Server release 7.7

$ uname -a
Linux <ホスト名> 4.14.35-1902.4.8.el7uek.x86_64 #2 SMP Sun Aug 4 22:25:18 GMT 2019 x86_64 x86_64 x86_64 GNU/Linux

#ファイアウォール有効
$ systemctl is-active firewalld.service
active

#SELinux有効
$ getenforce
Enforcing

3-2. 自動起動するサービス

デフォルトで起動しているサービスを調べる。

$ systemctl list-units --type=service

有効になっているサービス一覧(クリックすると開く)
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
abrt-ccpp.service            loaded active exited  Install ABRT coredump hook
abrt-oops.service            loaded active running ABRT kernel log watcher
abrtd.service                loaded active running ABRT Automated Bug Reporting
al-config.service            loaded active exited  Autonomous Linux configuratio
atd.service                  loaded active running Job spooling tools
auditd.service               loaded active running Security Auditing Service
bnxt-set-channel.service     loaded active exited  (null)
chronyd.service              loaded active running NTP client/server
cloud-config.service         loaded active exited  Apply the settings specified
cloud-final.service          loaded active exited  Execute cloud user/final scri
cloud-init-local.service     loaded active exited  Initial cloud-init job (pre-n
cloud-init.service           loaded active exited  Initial cloud-init job (metad
crond.service                loaded active running Command Scheduler
dbus.service                 loaded active running D-Bus System Message Bus
firewalld.service            loaded active running firewalld - dynamic firewall
getty@tty1.service           loaded active running Getty on tty1
gssproxy.service             loaded active running GSSAPI Proxy Daemon
irqbalance.service           loaded active running irqbalance daemon
iscsi-boot-volume.service    loaded active exited  Set boot volume startup to on
iscsi-shutdown.service       loaded active exited  Logout off all iSCSI sessions
iscsi.service                loaded active exited  Login and scanning of iSCSI d
iscsid.service               loaded active running Open-iSCSI
kdump.service                loaded active exited  Crash recovery kernel arming
kmod-static-nodes.service    loaded active exited  Create list of required stati
libstoragemgmt.service       loaded active running libstoragemgmt plug-in server
lvm2-lvmetad.service         loaded active running LVM2 metadata daemon
lvm2-monitor.service         loaded active exited  Monitoring of LVM2 mirrors, s
network.service              loaded active running LSB: Bring up/down networking
oci-yum-repo-mapper.service  loaded active exited  Oracle Cloud Infrastructure Y
ocid.service                 loaded active running Oracle Cloud Infrastructure u
oracle-cloud-agent-updater.service loaded active running Oracle Cloud Infrastruc
oracle-cloud-agent.service   loaded active running Oracle Cloud Infrastructure a
polkit.service               loaded active running Authorization Manager
rhel-dmesg.service           loaded active exited  Dump dmesg to /var/log/dmesg
rhel-domainname.service      loaded active exited  Read and set NIS domainname f
rhel-import-state.service    loaded active exited  Import network configuration
rhel-readonly.service        loaded active exited  Configure read-only root supp
rhnsd.service                loaded active running LSB: Starts the Spacewalk Dae
rngd.service                 loaded active running Hardware RNG Entropy Gatherer
rpcbind.service              loaded active running RPC bind service
rsyslog.service              loaded active running System Logging Service
selinux-policy-migrate-local-changes@targeted.service loaded active exited  Migr
serial-getty@ttyS0.service   loaded active running Serial Getty on ttyS0
smartd.service               loaded active running Self Monitoring and Reporting
sshd.service                 loaded active running OpenSSH server daemon
sysstat.service              loaded active exited  Resets System Activity Logs
systemd-hwdb-update.service  loaded active exited  Rebuild Hardware Database
systemd-journal-catalog-update.service loaded active exited  Rebuild Journal Cat
systemd-journal-flush.service loaded active exited  Flush Journal to Persistent
systemd-journald.service     loaded active running Journal Service
systemd-logind.service       loaded active running Login Service
systemd-machine-id-commit.service loaded active exited  Commit a transient machi
systemd-random-seed.service  loaded active exited  Load/Save Random Seed
systemd-remount-fs.service   loaded active exited  Remount Root and Kernel File
systemd-sysctl.service       loaded active exited  Apply Kernel Variables
systemd-tmpfiles-setup-dev.service loaded active exited  Create Static Device No
systemd-tmpfiles-setup.service loaded active exited  Create Volatile Files and D
systemd-udev-settle.service  loaded active exited  udev Wait for Complete Device
systemd-udev-trigger.service loaded active exited  udev Coldplug all Devices
systemd-udevd.service        loaded active running udev Kernel Device Manager
systemd-update-done.service  loaded active exited  Update is Completed
systemd-update-utmp.service  loaded active exited  Update UTMP about System Boot
systemd-user-sessions.service loaded active exited  Permit User Sessions
systemd-vconsole-setup.service loaded active exited  Setup Virtual Console
tuned.service                loaded active running Dynamic System Tuning Daemon
vdo.service                  loaded active exited  VDO volume services

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

66 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Autonomous LinuxだけでActiveなサービスは以下のとおり。ocid.serviceはOracle Linux 7にもあるので、al-config.serviceがAutonomous Linux固有のサービスだと思われる。

  • al-config.service:Autonomous Linux configuration service
  • ocid.service:Oracle Cloud Infrastructure utilities daemon
  • serial-getty@ttyS0.service:Serial Getty on ttyS0
  • systemd-hwdb-update.service:Rebuild Hardware Database

3-3. ファイアウォール設定

ファイアウォール設定はOracle Linux 7と同じだ。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

3-4. Yumリポジトリ設定

Yumリポジトリは「Autonomous Linux専用」と「ユーザースペース用Ksplice(glibcとopenssl)」が有効になっている。

$ sudo yum repolist enabled
Loaded plugins: langpacks, ulninfo
repo id                      repo name                                    status
★al7/x86_64                   Autonomous Linux 7Server (x86_64)            1,360
ol7_x86_64_userspace_ksplice Ksplice aware userspace packages for Oracle    432
repolist: 1,783

参考までにOracle Linux 7.7では以下のようになっている。al7リポジトリが1,360であるのに対し、ol7_latestが15,430と差が大きい。al7リポジトリは、提供しているパッケージを絞っているようだ。

repo id                         repo name
ol7_UEKR5/x86_64                Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Se    162
ol7_addons/x86_64               Oracle Linux 7Server Add ons (x86_64)                                  370
ol7_developer/x86_64            Oracle Linux 7Server Development Packages (x86_64)                     980
ol7_developer_EPEL/x86_64       Oracle Linux 7Server Development Packages (x86_64)                  28,157
ol7_ksplice                     Ksplice for Oracle Linux 7Server (x86_64)                            1,093
★ol7_latest/x86_64               Oracle Linux 7Server Latest (x86_64)                                15,430
ol7_oci_included/x86_64         Oracle Software for OCI users on Oracle Linux 7Server (x86_64)          33
ol7_optional_latest/x86_64      Oracle Linux 7Server Optional Latest (x86_64)                       11,437
ol7_software_collections/x86_64 Software Collection Library release 3.0 packages for Oracle Linux 7 14,024
repolist: 71,686

list availableでインストール可能なパッケージ数をカウントしてみると、標準リポジトリだけでも差が大きい。al7リポジトリにはtreeコマンドも含まれていなかった。

Oracle Autonomous Linuxで実行
# yum --disablerepo=* --enablerepo=al7 list available | wc -l
227

Oracle Linux 7.7で実行
# yum --disablerepo=* --enablerepo=ol7_latest list available | wc -l
4928

3-5. インストールされているパッケージ

インストールされているパッケージでめぼしいものを探してみる。--lastを指定すると、新しくインストールしたパッケージから降順に表示できる。

なお、日を変えてインスタンスを作成したところバラツキがあった。Autonomous Linuxは絶賛開発中なので、実行時期によって変わるのだろう。

気になる部分に★を付けた。Autonomous Linux専用サービスのal-config、PythonのOracle DB/OCI系のライブラリ、Oracleインスタント・クライアント、tunedのOCI専用プロファイルあたりだろうか。

# rpm -qa --last |less
★al-config-1.0-1.0.26.el7.noarch               Sun Sep  8 12:52:15 2019
python-oci-cli-2.6.3-1.el7.noarch             Sun Sep  8 12:52:13 2019
python2-jmespath-0.9.3-1.el7.noarch           Sun Sep  8 12:52:11 2019
python-oci-sdk-2.3.3-1.el7.x86_64             Sun Sep  8 12:52:11 2019
pytz-2016.10-2.el7.noarch                     Sun Sep  8 12:52:03 2019
python2-packaging-16.8-5.el7.noarch           Sun Sep  8 12:52:03 2019
python2-click-6.7-6.el7.noarch                Sun Sep  8 12:52:03 2019
python-terminaltables-3.1.0-1.el7.noarch      Sun Sep  8 12:52:03 2019
python-retrying-1.3.3-1.el7.noarch            Sun Sep  8 12:52:03 2019
python-jwt-1.5.3-1.0.1.el7.noarch             Sun Sep  8 12:52:03 2019
python-configparser-3.5.0-0.2.el7.noarch      Sun Sep  8 12:52:03 2019
python-certifi-2017.4.17-1.el7.noarch         Sun Sep  8 12:52:03 2019
python-asn1crypto-0.22.0-1.el7.noarch         Sun Sep  8 12:52:03 2019
pyparsing-2.0.3-1.el7.noarch                  Sun Sep  8 12:52:03 2019
python-ndg_httpsclient-0.3.2-1.el7.noarch     Sun Sep  8 12:52:02 2019
python-cx_Oracle-7.0-1.0.1.el7.x86_64         Sun Sep  8 12:52:02 2019
★oracle-instantclient18.3-basic-18.3.0.0.0-2.x86_64 Sun Sep  8 12:52:01 2019
python2-arrow-0.10.0-1.el7.noarch             Sun Sep  8 12:51:55 2019
python-httpsig_cffi-15.0.0-1.el7.noarch       Sun Sep  8 12:51:55 2019
python-dateutil-2.7.3-2.el7.noarch            Sun Sep  8 12:51:55 2019
yum-cron-3.4.3-163.0.1.el7.noarch             Sun Sep  8 12:51:52 2019
openssl-libs-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep  8 12:51:50 2019
openssl-1.0.2k-19.0.1.ksplice1.el7.x86_64     Sun Sep  8 12:51:50 2019
glibc-2.17-292.0.1.ksplice1.el7.x86_64        Sun Sep  8 12:51:49 2019
glibc-common-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep  8 12:51:48 2019
ksplice-helper-1.0.42-1.el7.x86_64            Sun Sep  8 12:51:45 2019
ksplice-known-exploit-detection-1.0.42-1.el7.x86_64 Sun Sep  8 12:51:43 2019
★tuned-profiles-oci-recommend-2.11.0-5.0.2.el7_7.1.noarch Sun Sep  8 12:51:33 201
9
★tuned-profiles-oci-2.11.0-5.0.2.el7_7.1.noarch Sun Sep  8 12:51:33 2019

3-6. cron設定

Oracle Autonomous Linuxでは各種自動化が行われているのでcron設定を確認する。

# ls -F /etc/cron*
/etc/cron.deny  /etc/crontab

/etc/cron.d:
0hourly  al-update  ksplice  raid-check  sysstat  uptrack

/etc/cron.daily:
0yum-daily.cron*  logrotate*  man-db.cron*  mlocate*

/etc/cron.hourly:
0anacron*  0yum-hourly.cron*

/etc/cron.monthly:

/etc/cron.weekly:

Oracle Autonomous Linux専用コマンドの1つ、al-updateが実行される。

/etc/cron.d/al-update
# Daily cron job for AL updates
29 12 * * * root /usr/sbin/al-update &>/dev/null

Ksplice用のcronファイルはあるが、2つともコメントアウトされている。

/etc/cron.d/ksplice
# 5,35 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/bin/ksplice ] && (/usr/bin/ksplice --cron user upgrade; /usr/bin/ksplice --cron xen upgrade)
/etc/cron.d/uptrack
# 16,46 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/sbin/uptrack-upgrade ] && /usr/sbin/uptrack-upgrade --cron

Yumアップデートの自動化ツールyum-cronの設定ファイルは、毎時と毎日の2つがある。

# ls -F /etc/cron*/*yum*
/etc/cron.daily/0yum-daily.cron*  /etc/cron.hourly/0yum-hourly.cron*
/etc/cron.daily/0yum-daily.cron
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron
/etc/cron.hourly/0yum-hourly.cron
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.conf

それぞれの設定ファイルでapply_updates = noになっている。そのためyum-cronを実行しても、RPMパッケージはアップデートされないハズだ。

# grep apply_updates /etc/yum/yum-cron*conf
/etc/yum/yum-cron.conf:apply_updates = no
/etc/yum/yum-cron-hourly.conf:apply_updates = no

しかし/var/log/yum.logを見ると、アップデートされているように見える。このあたりは、今後の課題にする。

/var/log/yum.log
Oct 02 12:29:13 Updated: python-oci-sdk.x86_64 2.5.1-1.el7
Oct 02 12:29:14 Updated: python-oci-cli.noarch 2.6.6-1.el7
Oct 02 12:29:15 Updated: sg3_utils-libs.x86_64 1.37-18.0.1.el7_7.1
Oct 02 12:29:16 Updated: kernel-tools-libs.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:17 Updated: kernel-tools.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:18 Updated: sg3_utils.x86_64 1.37-18.0.1.el7_7.1
Oct 02 12:29:28 Updated: al-config.noarch 1.0-1.0.28.el7
Oct 02 12:29:34 Installed: kernel-uek.x86_64 4.14.35-1902.5.2.2.el7uek
Oct 02 12:29:35 Updated: python-perf.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:45 Installed: kernel.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:46 Updated: bpftool.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:46 Updated: tzdata.noarch 2019c-1.el7

3-7. tuned設定

自動チューニングサービスのtunedは、Oracle Cloud Infrastructure独自のものが設定されている。

# tuned-adm active
Current active profile: oci-rps-xps oci-busy-polling oci-cpu-power

profile_infoを指定するとプロファイル情報が表示されるが、サマリーなのでよく分からない。RPS/XPSだからネットワーク系か。

# tuned-adm profile_info oci-rps-xps
Profile name:
oci-rps-xps

Profile summary:
Enable RPS/XPS conditionally in OCI

それぞれのプロファイルの実体は、以下のファイルで確認できる。本題では無いので説明しないが、どのような設定になっているか興味のある人は確認して欲しい。

# ls -F /usr/lib/tuned/
balanced/     latency-performance/  oci-cpu-power/  throughput-performance/
desktop/      network-latency/      oci-rps-xps/    virtual-guest/
functions     network-throughput/   powersave/      virtual-host/
hpc-compute/  oci-busy-polling/     recommend.d/

おわりに

長くなったので、ひと区切り付けることにする。次回はKsplice設定や、Oracle Autonomous Linux固有の機能、また今回の調査では不明だった部分の調査を行ないたい。

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

Oracle Autonomous Linuxをハックする Part 1

1. Oracle Autonomous Linuxの発表

2019年9月に開催された「Oracle OpenWorld 2019」で、驚いたトピックの1つが「Oracle Autonomous Linuxの発表」だ。Autonomousが近年Oracle社のキーメッセージになっているとはといえ、まさかLinuxだとは思わなかった。

いずれの記事も説明は抽象的だが、おそらく以下のようなスペックだと思われる。そこで実際に触って機能をあきらかにしたい。

  • Oracle Autonomous LinuxはOracle Cloud Infrastructureで提供
  • 自動RPMパッケージ・アップデート
  • 自動セキュリティパッチ適用
  • Kspliceによるゼロ・ダウンタイム・アップグレード

2. Oracle Autonomous Linuxを作成する

Oracle Autonomous Linuxインスタンスを作成してみよう。マニュアルはOracle Cloud Infrastructure ComputeのMarketplaceページにある(要Oracle Cloud Infrastructureアカウント)。

ただし、現時点のマニュアルは難解でタイポも散見される。今後の機能向上とともに、マニュアルも改善されることを期待したい。

愚痴モードで言うなら、IAMの構文に2ヶ所も間違いがあり、構文エラーを直すのに時間がかかった。使わせないために、わざとやっているのではと思うほど。

Version: Autonomous-Linux-2019.09.07
Release Date: 9/7/2019

2-1. 設定の流れ

マニュアルに書かれている設定手順は以下のとおり。

1. Notifications(通知)のセットアップ
 - トピックの作成
 - トピックにemailアドレスの関連付け

2. ダイナミック・グループのセットアップ
 - ダイナミック・グループの作成
 - ダイナミック・グループにポリシー割り当て

3. Oracle Autonomous Linuxインスタンスの作成
 - Oracle Autonomous Linuxイメージを使用してインスタンスを作成
 - al-configコマンドでインスタンスとトピックを関連付け
 

2-2. Notifications(通知)のセットアップ

メッセージング・サービスのNotifications(Amazon SQS相当)をセットアップする。

  1. OCI管理コンソールのメニューから[Application Integration]-[Notifications]を選択する。
  2. [Create Topic]をクリックしてトピックを作成する。今回は「AL_Notifications」という名前で作成。
  3. 作成したトピックをクリックして詳細を表示する。
  4. [Create Subscription]をクリックしてサブスクリプションを作成する。今回は 通知先emailアドレスを設定する。email以外にSlackやPagerDuty、URLも指定できる。
  5. サブスクリプションを作成すると、通知先のアドレスにメールが送信される。送信されたメール内のリンクをクリックして有効化する。有効化すると、ステータスがPENDINGからACTIVEに変わる。

2-3. ダイナミック・グループのセットアップ

Oracle Autonomous Linuxインスタンスが存在するコンパートメント内からメッセージを通知できるように、ダイナミック・グループとポリシーを構成する。

  1. OCI管理コンソールから[Identity]-[Dynamic Groups]を選択する。
  2. 以下の内容でダイナミック・グループを作成する。
項目
NAME AL_Notifications_comp1_grp
DESCRIPTION for Autonomous Linux Notifications
Matching Rules ALL {instance.compartment.id = '<compartment OCID>'}

3.OCI管理コンソールから[Identity]-[Policies]を選択する。
4.以下の内容でポリシーを作成する。

項目
NAME AL_Notifications_pol
DESCRIPTION for Autonomous Linux Notifications
Policy Statements Allow dynamic-group <dynamic group name> to use ons-topics in compartment <topic compartment name> where request.permission='ONS_TOPIC_PUBLISH'

2-4. Oracle Autonomous Linuxインスタンスの作成

インスタンスの作成方法は、通常のComputeインスタンスと同じだ。異なる点はOracle Imagesから"Oracle Autonomous Linux"を選択すること。

  1. Oracle Imagesから選択する。
    autolinux01.PNG

  2. 一番下までスクロールして、Acceptをチェックし、Select Imageをクリックする。
    autolinux02.PNG

  3. 作成が完了したら、次のコマンドを実行してトピックを関連付ける。インスタンス作成時のUser Dataで指定してもよい。

$ sudo al-config -T <topic OCID> 

3. Oracle Autonomous Linuxの設定を調べる

まずはOSの設定を確認する。ディストリビューションのバージョンや起動しているサービスなど、基本的な設定を確認する。

3-1. OS基本設定

ベースはOracle Linux 7.7で、UEK Release 5カーネルを使用している。

$ cat /etc/oracle-release
Oracle Linux Server release 7.7

$ uname -a
Linux <ホスト名> 4.14.35-1902.4.8.el7uek.x86_64 #2 SMP Sun Aug 4 22:25:18 GMT 2019 x86_64 x86_64 x86_64 GNU/Linux

#ファイアウォール有効
$ systemctl is-active firewalld.service
active

#SELinux有効
$ getenforce
Enforcing

3-2. 自動起動するサービス

デフォルトで起動しているサービスを調べる。

$ systemctl list-units --type=service

有効になっているサービス一覧(クリックすると開く)
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
abrt-ccpp.service            loaded active exited  Install ABRT coredump hook
abrt-oops.service            loaded active running ABRT kernel log watcher
abrtd.service                loaded active running ABRT Automated Bug Reporting
al-config.service            loaded active exited  Autonomous Linux configuratio
atd.service                  loaded active running Job spooling tools
auditd.service               loaded active running Security Auditing Service
bnxt-set-channel.service     loaded active exited  (null)
chronyd.service              loaded active running NTP client/server
cloud-config.service         loaded active exited  Apply the settings specified
cloud-final.service          loaded active exited  Execute cloud user/final scri
cloud-init-local.service     loaded active exited  Initial cloud-init job (pre-n
cloud-init.service           loaded active exited  Initial cloud-init job (metad
crond.service                loaded active running Command Scheduler
dbus.service                 loaded active running D-Bus System Message Bus
firewalld.service            loaded active running firewalld - dynamic firewall
getty@tty1.service           loaded active running Getty on tty1
gssproxy.service             loaded active running GSSAPI Proxy Daemon
irqbalance.service           loaded active running irqbalance daemon
iscsi-boot-volume.service    loaded active exited  Set boot volume startup to on
iscsi-shutdown.service       loaded active exited  Logout off all iSCSI sessions
iscsi.service                loaded active exited  Login and scanning of iSCSI d
iscsid.service               loaded active running Open-iSCSI
kdump.service                loaded active exited  Crash recovery kernel arming
kmod-static-nodes.service    loaded active exited  Create list of required stati
libstoragemgmt.service       loaded active running libstoragemgmt plug-in server
lvm2-lvmetad.service         loaded active running LVM2 metadata daemon
lvm2-monitor.service         loaded active exited  Monitoring of LVM2 mirrors, s
network.service              loaded active running LSB: Bring up/down networking
oci-yum-repo-mapper.service  loaded active exited  Oracle Cloud Infrastructure Y
ocid.service                 loaded active running Oracle Cloud Infrastructure u
oracle-cloud-agent-updater.service loaded active running Oracle Cloud Infrastruc
oracle-cloud-agent.service   loaded active running Oracle Cloud Infrastructure a
polkit.service               loaded active running Authorization Manager
rhel-dmesg.service           loaded active exited  Dump dmesg to /var/log/dmesg
rhel-domainname.service      loaded active exited  Read and set NIS domainname f
rhel-import-state.service    loaded active exited  Import network configuration
rhel-readonly.service        loaded active exited  Configure read-only root supp
rhnsd.service                loaded active running LSB: Starts the Spacewalk Dae
rngd.service                 loaded active running Hardware RNG Entropy Gatherer
rpcbind.service              loaded active running RPC bind service
rsyslog.service              loaded active running System Logging Service
selinux-policy-migrate-local-changes@targeted.service loaded active exited  Migr
serial-getty@ttyS0.service   loaded active running Serial Getty on ttyS0
smartd.service               loaded active running Self Monitoring and Reporting
sshd.service                 loaded active running OpenSSH server daemon
sysstat.service              loaded active exited  Resets System Activity Logs
systemd-hwdb-update.service  loaded active exited  Rebuild Hardware Database
systemd-journal-catalog-update.service loaded active exited  Rebuild Journal Cat
systemd-journal-flush.service loaded active exited  Flush Journal to Persistent
systemd-journald.service     loaded active running Journal Service
systemd-logind.service       loaded active running Login Service
systemd-machine-id-commit.service loaded active exited  Commit a transient machi
systemd-random-seed.service  loaded active exited  Load/Save Random Seed
systemd-remount-fs.service   loaded active exited  Remount Root and Kernel File
systemd-sysctl.service       loaded active exited  Apply Kernel Variables
systemd-tmpfiles-setup-dev.service loaded active exited  Create Static Device No
systemd-tmpfiles-setup.service loaded active exited  Create Volatile Files and D
systemd-udev-settle.service  loaded active exited  udev Wait for Complete Device
systemd-udev-trigger.service loaded active exited  udev Coldplug all Devices
systemd-udevd.service        loaded active running udev Kernel Device Manager
systemd-update-done.service  loaded active exited  Update is Completed
systemd-update-utmp.service  loaded active exited  Update UTMP about System Boot
systemd-user-sessions.service loaded active exited  Permit User Sessions
systemd-vconsole-setup.service loaded active exited  Setup Virtual Console
tuned.service                loaded active running Dynamic System Tuning Daemon
vdo.service                  loaded active exited  VDO volume services

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

66 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Autonomous LinuxだけでActiveなサービスは以下のとおり。ocid.serviceはOracle Linux 7にもあるので、al-config.serviceがAutonomous Linux固有のサービスだと思われる。

  • al-config.service:Autonomous Linux configuration service
  • ocid.service:Oracle Cloud Infrastructure utilities daemon
  • serial-getty@ttyS0.service:Serial Getty on ttyS0
  • systemd-hwdb-update.service:Rebuild Hardware Database

3-3. ファイアウォール設定

ファイアウォール設定はOracle Linux 7と同じだ。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

3-4. Yumリポジトリ設定

Yumリポジトリは「Autonomous Linux専用」と「ユーザー空間用Ksplice(glibcとopenssl)」が有効になっている。

$ sudo yum repolist enabled
Loaded plugins: langpacks, ulninfo
repo id                      repo name                                    status
★al7/x86_64                   Autonomous Linux 7Server (x86_64)            1,360
ol7_x86_64_userspace_ksplice Ksplice aware userspace packages for Oracle    432
repolist: 1,783

参考までにOracle Linux 7.7では以下のようになっている。al7リポジトリが1,360であるのに対し、ol7_latestが15,430と差が大きい。al7リポジトリは、提供しているパッケージを絞っているようだ。

repo id                         repo name
ol7_UEKR5/x86_64                Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Se    162
ol7_addons/x86_64               Oracle Linux 7Server Add ons (x86_64)                                  370
ol7_developer/x86_64            Oracle Linux 7Server Development Packages (x86_64)                     980
ol7_developer_EPEL/x86_64       Oracle Linux 7Server Development Packages (x86_64)                  28,157
ol7_ksplice                     Ksplice for Oracle Linux 7Server (x86_64)                            1,093
★ol7_latest/x86_64               Oracle Linux 7Server Latest (x86_64)                                15,430
ol7_oci_included/x86_64         Oracle Software for OCI users on Oracle Linux 7Server (x86_64)          33
ol7_optional_latest/x86_64      Oracle Linux 7Server Optional Latest (x86_64)                       11,437
ol7_software_collections/x86_64 Software Collection Library release 3.0 packages for Oracle Linux 7 14,024
repolist: 71,686

list availableでインストール可能なパッケージ数をカウントしてみると、標準リポジトリだけでも差が大きい。al7リポジトリにはtreeコマンドも含まれていなかった。

Oracle Autonomous Linuxで実行
# yum --disablerepo=* --enablerepo=al7 list available | wc -l
227

Oracle Linux 7.7で実行
# yum --disablerepo=* --enablerepo=ol7_latest list available | wc -l
4928

3-5. インストールされているパッケージ

インストールされているパッケージでめぼしいものを探してみる。--lastを指定すると、新しくインストールしたパッケージから降順に表示できる。

なお、日を変えてインスタンスを作成したところバラツキがあった。Autonomous Linuxは絶賛開発中なので、実行時期によって変わるのだろう。

気になる部分に★を付けた。Autonomous Linux専用サービスのal-config、PythonのOracle DB/OCI系のライブラリ、Oracleインスタント・クライアント、tunedのOCI専用プロファイルあたりだろうか。

# rpm -qa --last |less
★al-config-1.0-1.0.26.el7.noarch               Sun Sep  8 12:52:15 2019
python-oci-cli-2.6.3-1.el7.noarch             Sun Sep  8 12:52:13 2019
python2-jmespath-0.9.3-1.el7.noarch           Sun Sep  8 12:52:11 2019
python-oci-sdk-2.3.3-1.el7.x86_64             Sun Sep  8 12:52:11 2019
pytz-2016.10-2.el7.noarch                     Sun Sep  8 12:52:03 2019
python2-packaging-16.8-5.el7.noarch           Sun Sep  8 12:52:03 2019
python2-click-6.7-6.el7.noarch                Sun Sep  8 12:52:03 2019
python-terminaltables-3.1.0-1.el7.noarch      Sun Sep  8 12:52:03 2019
python-retrying-1.3.3-1.el7.noarch            Sun Sep  8 12:52:03 2019
python-jwt-1.5.3-1.0.1.el7.noarch             Sun Sep  8 12:52:03 2019
python-configparser-3.5.0-0.2.el7.noarch      Sun Sep  8 12:52:03 2019
python-certifi-2017.4.17-1.el7.noarch         Sun Sep  8 12:52:03 2019
python-asn1crypto-0.22.0-1.el7.noarch         Sun Sep  8 12:52:03 2019
pyparsing-2.0.3-1.el7.noarch                  Sun Sep  8 12:52:03 2019
python-ndg_httpsclient-0.3.2-1.el7.noarch     Sun Sep  8 12:52:02 2019
python-cx_Oracle-7.0-1.0.1.el7.x86_64         Sun Sep  8 12:52:02 2019
★oracle-instantclient18.3-basic-18.3.0.0.0-2.x86_64 Sun Sep  8 12:52:01 2019
python2-arrow-0.10.0-1.el7.noarch             Sun Sep  8 12:51:55 2019
python-httpsig_cffi-15.0.0-1.el7.noarch       Sun Sep  8 12:51:55 2019
python-dateutil-2.7.3-2.el7.noarch            Sun Sep  8 12:51:55 2019
yum-cron-3.4.3-163.0.1.el7.noarch             Sun Sep  8 12:51:52 2019
openssl-libs-1.0.2k-19.0.1.ksplice1.el7.x86_64 Sun Sep  8 12:51:50 2019
openssl-1.0.2k-19.0.1.ksplice1.el7.x86_64     Sun Sep  8 12:51:50 2019
glibc-2.17-292.0.1.ksplice1.el7.x86_64        Sun Sep  8 12:51:49 2019
glibc-common-2.17-292.0.1.ksplice1.el7.x86_64 Sun Sep  8 12:51:48 2019
ksplice-helper-1.0.42-1.el7.x86_64            Sun Sep  8 12:51:45 2019
ksplice-known-exploit-detection-1.0.42-1.el7.x86_64 Sun Sep  8 12:51:43 2019
★tuned-profiles-oci-recommend-2.11.0-5.0.2.el7_7.1.noarch Sun Sep  8 12:51:33 201
9
★tuned-profiles-oci-2.11.0-5.0.2.el7_7.1.noarch Sun Sep  8 12:51:33 2019

3-6. cron設定

Oracle Autonomous Linuxでは各種自動化が行われているのでcron設定を確認する。

# ls -F /etc/cron*
/etc/cron.deny  /etc/crontab

/etc/cron.d:
0hourly  al-update  ksplice  raid-check  sysstat  uptrack

/etc/cron.daily:
0yum-daily.cron*  logrotate*  man-db.cron*  mlocate*

/etc/cron.hourly:
0anacron*  0yum-hourly.cron*

/etc/cron.monthly:

/etc/cron.weekly:

Oracle Autonomous Linux専用コマンドの1つ、al-updateが毎日12時29分に実行される。

/etc/cron.d/al-update
# Daily cron job for AL updates
29 12 * * * root /usr/sbin/al-update &>/dev/null

Ksplice用のcronファイルはあるが、2つともコメントアウトされている。

/etc/cron.d/ksplice
# 5,35 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/bin/ksplice ] && (/usr/bin/ksplice --cron user upgrade; /usr/bin/ksplice --cron xen upgrade)
/etc/cron.d/uptrack
# 16,46 * * * * root export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && [ -x /usr/sbin/uptrack-upgrade ] && /usr/sbin/uptrack-upgrade --cron

Yumアップデートの自動化ツールyum-cronの設定ファイルは、毎時と毎日の2つがある。

# ls -F /etc/cron*/*yum*
/etc/cron.daily/0yum-daily.cron*  /etc/cron.hourly/0yum-hourly.cron*
/etc/cron.daily/0yum-daily.cron
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron
/etc/cron.hourly/0yum-hourly.cron
if [[ ! -f /var/lock/subsys/yum-cron ]]; then
  exit 0
fi

# Action!
exec /usr/sbin/yum-cron /etc/yum/yum-cron-hourly.conf

それぞれの設定ファイルでapply_updates = noになっている。そのためyum-cronを実行しても、RPMパッケージはアップデートされないハズだ。

# grep apply_updates /etc/yum/yum-cron*conf
/etc/yum/yum-cron.conf:apply_updates = no
/etc/yum/yum-cron-hourly.conf:apply_updates = no

しかし/var/log/yum.logを見ると、アップデートされているように見える。このあたりは、今後の課題にする。

/var/log/yum.log
Oct 02 12:29:13 Updated: python-oci-sdk.x86_64 2.5.1-1.el7
Oct 02 12:29:14 Updated: python-oci-cli.noarch 2.6.6-1.el7
Oct 02 12:29:15 Updated: sg3_utils-libs.x86_64 1.37-18.0.1.el7_7.1
Oct 02 12:29:16 Updated: kernel-tools-libs.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:17 Updated: kernel-tools.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:18 Updated: sg3_utils.x86_64 1.37-18.0.1.el7_7.1
Oct 02 12:29:28 Updated: al-config.noarch 1.0-1.0.28.el7
Oct 02 12:29:34 Installed: kernel-uek.x86_64 4.14.35-1902.5.2.2.el7uek
Oct 02 12:29:35 Updated: python-perf.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:45 Installed: kernel.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:46 Updated: bpftool.x86_64 3.10.0-1062.1.2.el7
Oct 02 12:29:46 Updated: tzdata.noarch 2019c-1.el7

3-7. tuned設定

自動チューニングサービスのtunedは、Oracle Cloud Infrastructure独自のものが設定されている。

# tuned-adm active
Current active profile: oci-rps-xps oci-busy-polling oci-cpu-power

profile_infoを指定するとプロファイル情報が表示されるが、サマリーなのでよく分からない。RPS/XPSだからネットワーク系か。

# tuned-adm profile_info oci-rps-xps
Profile name:
oci-rps-xps

Profile summary:
Enable RPS/XPS conditionally in OCI

それぞれのプロファイルの実体は、以下のファイルで確認できる。本題では無いので説明しないが、どのような設定になっているか興味のある人は確認してほしい。

# ls -F /usr/lib/tuned/
balanced/     latency-performance/  oci-cpu-power/  throughput-performance/
desktop/      network-latency/      oci-rps-xps/    virtual-guest/
functions     network-throughput/   powersave/      virtual-host/
hpc-compute/  oci-busy-polling/     recommend.d/

おわりに

長くなったので、ひと区切り付けることにする。次回はKsplice設定や、Oracle Autonomous Linux固有の機能、また今回の調査では不明だった部分の調査を行いたい。

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

Linux基礎(パーミッション)

ファイルのPermissionと所有者の確認

lsコマンドでファイル情報の詳細情報を表示することができる。

#詳細情報を表示する場合はオプションlをつけるとよい。
$ ls -l

ファイル情報の見方
スクリーンショット 2019-10-01 22.07.03.png

アクセス権限

Linuxで作成されるファイルやディレクトリにはアクセス権(パーミッション)が設定される。これでユーザごとにファイルへのアクセスの許可または禁止を設定できる。アクセス権には、以下の3種類がある。

  • ファイルへのアクセス権限
アクセス権 表記 説明
読み取り r read|ファイルの読み取りが可能(内容表示など)
書き込み w write|ファイルへの書き込みが可能(編集/更新/コピーなど)
実行 x execute|ファイルの実行が可能(プログラム/シェルスクリプトの実行)
  • ディレクトリへのアクセス権限
アクセス権 表記 説明
読み取り r read|ディレクトリの読み取りが可能(ディレクトリに登録されているファイル名の表示)
書き込み w write|ディレクトリの書き込みが可能(新規ファイル作成、削除、名前変更など)
実行 x execute|ディレクトリに登録されているファイルへのアクセスが可能

※ファイルへのアクセス権限にreadの許可があっても、ディレクトリのexecute許可がなければファイルにアクセスできない。

ファイル権限の見方
スクリーンショット 2019-10-01 22.29.48.png

ファイルの種別は3つあり「-」はファイル、「d」はディレクトリ、「l」はリンクを表す。また、アクセス権は数値でも表すことができる。

記号表記 2進数 8進数
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

スクリーンショット 2019-10-01 22.40.57.png

アクセス権限の変更

アクセス権限は、chmodコマンドにより変更することができる。
chmod [オプション] アクセス権 ファイル名

オプション 説明
-R 指定したディレクトリ以下の全てのファイルのアクセス権の変更
カテゴリ 説明
-R 指定したディレクトリ以下の全てのファイルのアクセス権の変更
カテゴリー 説明
u 所有者
g グループ
o その他のユーザ
a 全てのユーザ
定義 説明
+ アクセス権の追加
- アクセス権の削除
= アクセス権の指定
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

xrdpではまる。X Server -- no display in range is available. xrdp_mm_process_login_response: login failed

WSLでwindows上にKALI LinuxのGUI環境を作ったところ、xrdpではまりました。

GUI環境のセットアップは無事完了し動作確認もできました。
翌日に利用したところログインできません。

no display in range is available.
xrdp_mm_process_login_response: login failed

もしやのUser/Passの物忘れかと思い、何度も試しましたが一向にログインできません。
syslogを確認したところ、どうも原因はディスプレイに必要なセッションレンジに空きが無いようです。

[20190919-00:00:00] [INFO ] starting Xorg session...
[20191001-00:00:00] [ERROR] X server -- no display in range is available

xrdpの設定ファイルをのぞいてみます。
切断されたセッションを強制終了するKillDisconnectedfalseになっていたので、これではゾンビセッションが増え続けそうです。パラメータをfalseからtrueに変更します。
更にセッションが足りないため、MaxSessions50から100に増やしました。

sudo vi /etc/xrdp/sesmain.ini

[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10

;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
MaxSessions=100

;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
KillDisconnected=true

;; DisconnectedTimeLimit - when to kill idle sessions
; Type: integer
; Default: 0
; if not zero, the seconds before a disconnected session is killed
; min 60 seconds
DisconnectedTimeLimit=0

xrdpを再起動します。

$ sudo /etc/init.d/xrdp restart

無事接続できました。

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

LPIC 101:Linuxパッケージ管理ツールコマンドに関するTips

Linuxにはパッケージ管理ツールというものが複数あり、LPIC 101試験ではその主要ないくつかのものについて学ぶ必要があるが、とにかくわかりにくい。同じような機能のオプションなどが異なる表記だったり、逆に同じ表記なのに微妙に/大きく異る機能だったりする。
このエントリでは、少しでも覚えやすくするために、個人的に2,3の似たような機能やサブコマンドを整理したい。
なお、メインのコマンドに続けて指定する要素は、dpkgでは「アクション」、rpmでは「オプション・併用オプション」、apt系・yum・zypperでは「サブコマンド」と呼ばれるが、面倒なので全部「サブコマンド」と呼ぶが、dpkgとrpmに関しては本来このような呼び方をしないので注意されたい。
また、yumの後継者的位置づけであるdnfについては、LPIC 101範囲では詳しく問われず、yumとほぼ同じであるため、割愛する。

パッケージ更新関係

パッケージを更新するサブコマンドをコマンドごとに一覧にしてみた。同時に、リポジトリ情報の更新サブコマンドについても表にした。

サブコマンド\機能 パッケージ更新 リポジトリ更新
dpkg -i(--install) *1 なし
apt upgrade update
rpm -U(--upgrade)/-F(--freshen) *2 なし
yum update なし
zypper update freshen

*1 新しいバージョンを指定してインストールする
*2 -Uは対象が存在しなければインストール、-Fは存在しなくてもインストールしない

listサブコマンド

listという言葉を含むサブコマンドがたくさんあり、何をするのかがコマンドごとに異なっていてわかりづらいものを、コマンドごとに一覧にした。
またrpmコマンドの併用オプションにはファイルを一覧表示するものが複数あるため、それも示した。

コマンド 機能
dpkg -l(--list) インストール済パッケージを検索・表示
dpkg -L(--listfiles) 指定パッケージからインストールされたファイルを一覧表示
apt list パッケージを一覧表示
rpm -q -l(--list) 指定パッケージに含まれるファイルの一覧表示
rpm -q -c(--configfiles) 設定ファイルのみを一覧表示
rpm -q -d(--docfiles) ドキュメントファイルのみを一覧表示
yum list 全パッケージ情報の一覧表示

パッケージ情報表示サブコマンド

パッケージの情報を表示するサブコマンドは、コマンドごとに異なる表記。

コマンド サブコマンド
dpkg -s(--status)
apt-cache show, showpkg
apt show
rpm(インストール/アップグレードモード) -v
rpm(照会モード) -i(--info)
yum info
zypper info

その他

  • yum check-updateとzypper list-updates(lu)は同じようなコマンド(前者は単数形、後者は複数形なことに注意)
  • searchはdpkgだけ他と異なり、検索したファイルがどのパッケージからインストールされたかを表示する

主要参照文献

  • 中島能和著、濵野賢一朗監修『Linux教科書 LPICレベル1 Version5.0対応』(翔泳社、2019年)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

特定のポート番号を使用するプロセスを一括killするワンライナー

ゾンビプロセスを駆逐するワンライナー。

特定のポートを使用しているプロセスを調べる。

$ lsof -i:ポート番号
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
ruby    37922 xxxx    xx  IPv4 xxxxxxx      xxx  TCP xxxxx:xxxxxx (ESTABLISHED)

PIDだけ出力する。

$ lsof -ti:ポート番号
37922

一括kill

$ lsof -ti:ポート番号 | xargs kill -9

参考にしたサイト

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