目次

Tips

ntpd.leap-seconds.listの有効期限更新

ntpd[####]: leapsecond file ('/var/db/ntpd.leap-seconds.list'): will expire in less than 26 days

とか

ntpd[####]: leapsecond file ('/var/db/ntpd.leap-seconds.list'): expired less than 26 days ago

と通知されるので、さっさと更新

削除1)

# mv /var/db/ntpd.leap-seconds.list /var/db/ntpd.leap-seconds.list.old

更新

# service ntpd fetch

確認

# ls -la /var/db/ntpd.leap-seconds.list
-rw-r--r--  1 root  wheel  10664 Sep 12 04:35 /var/db/ntpd.leap-seconds.list

なお、

Certificate verification failed .........

のようなエラーが出る場合はroot証明書の更新が必要

# pkg install ca_root_nss

Resource deadlock avoided

jailでnullfsマウントで以下のようなエラーが発生

Starting jails:mount_nullfs: /jail/xxxx/usr/ports: Resource deadlock avoided

不正なentryが残っていると設定変更してもerrorが出続けるので以下のようにunmountする

umount /jail/xxxx/usr/ports

CMOSクロック

/etc/wall_cmos_clock

このファイルがあると、CMOSクロックがローカル時間に設定されていることを示し、反対にこれが存在しないと、 UTC の CMOS クロックに設定されています。

Treeコマンドもどき

pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'

ルーティングテーブルの表示

ゲートウェイ(gw)が不明な時など

# netstat -nr

ルーティング設定

# route add -net 10.2.251.0/24 172.16.1.1

default gateway の指定 (192.168.11.1 を指定します)

# route add default 192.168.11.1

defalut gateway の削除

# route delete default

永続化 ⇒ /etc/rc.conf

static_routes="net01"
route_net01="-net 10.2.251.0/24 172.16.1.1"

ホスト名の変更

/etc/rc.conf に記述します
以下は記入例。次回起動時から有効になります。

hostname="hoge.example.com"

なお、稼働中のままホスト名を変更するには hostnameコマンドを使用します。

# hostname hoge.example.com

IPの設定

/etc/rc.conf に記述します

ifconfig_re0="inet 192.168.0.1/24"
defaultrouter="xxx.yyy.zzz.###"

コマンドラインから有効化・無効化

# service netif [start|stop|restart] igb0

NICの watchdog timeout

大量のトラフィックを流すとこんな感じでネットワークが死ぬことがあります。

msk0: watchdog timeout
msk0: link state changed to DOWN
msk0: link state changed to UP
msk0: watchdog timeout (missed Tx interrupts) -- recovering

この例ではMarvellですがre0(realtek:蟹)とかIntelでも発生します。

googleでお伺いを立ててみましたが、どうもずいぶん前から有る問題のようで、数年前から同じような質問が出ています。

で、どうも根深すぎてFixもお手上げのような雰囲気なのが…orz

で、対症療法ですが、以下の設定でとりあえずは抑えられます。

# cat /boot/loader.conf
hw.msk.msi_disable="1"

FreeBSD10でもHP G6 の内蔵 NIC等、同様のケースがあるようです

bge0: watchdog timeout -- resetting
bge0: link state changed to DOWN
bge0: link state changed to UP
# cat /boot/loader.conf
hw.bge.allow_asf="0"

FreeBSD / Nas4Free / Broadcom (bge) driver issues

グループ追加

# pw add group -g 10001 -n newgroup

ユーザ追加

# useradd
or
# pw add user -n newuser -u 10001 -g newgroup -m

ユーザ追加でエラー

pw adduser が中途半端に失敗したらしく、以下のようなエラーで追加できなくなる。2)3)4)

pw: user '[newuser]' disappeared during update

以下のコマンドで再作成する5)

/etc/pwd.db、/etc/spwd.db

# pwd_mkdb /etc/master.passwd

/etc/passwd

# pwd_mkdb -p /etc/master.passwd

sudo

# pkg install sudo
# visudo

jailなどで消せないファイルを消す

jail環境を丸ごと消したいときに以下の様に消せないものがある

# rm -rf jail-01b/
rm: jail-01b/libexec/ld-elf32.so.1: Operation not permitted
rm: jail-01b/libexec/ld-elf.so.1: Operation not permitted
......

ls -loで見ると

# ls -lo jail01/usr/bin/chpass
-r-sr-xr-x 6 root wheel schg ......

この*schg*というフラグが付いていることが原因

schgフラグを取り除く

chflags noschg `find jail-01b/`

これで、消せるはず

圧縮されたLOG閲覧

# bzip2 -dc ...log.#.bz2
or
# zcat ...log.#.gz
or
# gzip -dc ...log.#.gz | less

ファイルまたはディレクトリのみへの chmod コマンド

ファイルのみ

find . -type f -print | xargs chmod 644

ディレクトリのみ

find . -type d -print | xargs chmod 755

n日以上前に作成されたファイルやディレクトリの削除

30日以上前のファイル6)

$ find /path/to/ -type f -mtime +30

-execでコマンド指定できるので、削除は

$ find /path/to/ -type f -mtime +30 -exec rm -f {} \;

ディレクトリなら

$ find /path/to/ -type d -mtime +30 -exec rm -rf {} \;

tmpwatchコマンドを使う

起動時の待ち時間設定

起動時、通常10秒の選択を待つ時間がある

これを変更する場合7)

# cat /boot/loader.conf
autoboot_delay="3"

その他の設定項目については、

/boot/defaults/loader.conf

などを参照

cron でのPATH設定

以下のようにcrontabの先頭に追加する

# crontab -l                                                                                                  
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

#minute hour    mday    month   wday    command
0       4       *       *       1-6     /path/to/daily.script

Ruby on Rails のrakeなどは先頭8)

#!/usr/bin/env ruby19

と記述されているので、cronで呼び出すと

env: ruby19: No such file or directory

と、エラーになってしまう

参考

cron で > /dev/null して椅子を投げられないための3つの方法

disk追加1

パーティションテーブル作成

# gpart create -s GPT da#
gpart: geom 'da#': File exists

等と出る場合は以下で既存パーティション削除

# gpart destroy -F da#

確認

# gpart show da#
=>       40  234441568  da#  GPT  (112G)
         40  234441568       - free -  (112G)

パーティション作成

UFS用のパーティションを作成9)

# gpart add -t freebsd-ufs -a 1M da#
da#p1 added

確認

# gpart show da#
=>       40  234441568  da#  GPT  (112G)
         40       2008       - free -  (1.0M)
       2048  234438656    1  freebsd-ufs  (112G)
  234440704        904       - free -  (452K)

ファイルシステム作成

# newfs -U /dev/da#p1

マウント

手動

# mkdir /mnt/hdd
# mount /dev/da#p1 /mnt/hdd

確認

# df

/etc/fstab

以下のように追加

# Device     Mountpoint  FStype  Options Dump    Pass#
/dev/da#p1   /mnt/hdd    ufs     rw      0       2

マウント確認

# mount -a

UUIDでマウント

gpart list

表示からrawuuidを見て

1. Name: da#p1
 Mediasize: 120032591872 (112G)
 Sectorsize: 512
 Stripesize: 4096
 Stripeoffset: 0
 <snip>
 rawuuid: 40aaaaaa-bbbb-cccc-dddd-001122334455

/etc/fstabに追記

/dev/gptid/a5fed6e5-f0cf-11ea-a70d-a0369f210774 /mnt/hdd ufs rw 2 2

disk追加2

# sade

# newfs /dev/ada1p1
# mount /dev/ada1p1 /mnt

disk追加3 zfs

認識してるか確認して

# sade

以下を参照してpool追加

zfsコマンド/Diskの追加/Poolの作成

参考

http://www.freebsd.org/doc/faq/disks.html#idp67364656

メモリ容量

hw.physmemが物理メモリサイズ

% sysctl hw | grep mem
hw.physmem: 1035907072
hw.usermem: 839008256
hw.realmem: 1069547520
hw.pci.host_mem_start: 2147483648
hw.cbb.start_memory: 2281701376

イメージをコピーしてVMを作成するとき

seedとして使う値が元のimageと同じなので更新すること

service hostid reset
1)
ここでは念のためmvしてる
2)
削除もできない
3)
11.4-RELEASE-p7
4)
同じ事象がgitのinstallでも発生 @13.0p1
5)
/etc/passwd、/etc/pwd.db、/etc/spwd.db は、/etc/master.passwd から作成可能
6)
-mtimeをかえれば分単位もOK
7)
例の場合3秒
8)
シェバンとかシバンとか言われてる
9)
1M境界(-a 1M)を設定しておかないと性能が出ないらしい