指令:
# docker-compose rm -s -v service_name
或是參數合在一起也可以
# docker-compose rm -sv service_name
Options:
-f, --force Don't ask to confirm removal
-s, --stop Stop the containers, if required, before removing
-v, --volumes Remove any anonymous volumes attached to containers
舉例
docker-compose.yml 內容
helloworld 發表在 痞客邦 留言(0) 人氣(37)
以前如果想讓linux 系統在重啟後,自動執行某些程式的話
習慣會把要執行的 scripts 加入 /etc/rc.local
其實crontab 也有相同的功能
crontab -e
加入
@reboot sleep 10 ; date > /tmp/reboot.log
重開機測試
檢查 /tmp 目錄下是否有剛剛產生或異動的檔案
-rw-r--r-- 1 root root 32 May 24 01:55 reboot.log
另外一個情境是,假設你沒有管理員權限
也可以透過 crontab 來自動啟用某些程式
@reboot date >> ~/reboot.log
helloworld 發表在 痞客邦 留言(0) 人氣(287)
修改 ./wp-includes/functions.php
新增
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
修改 ./wp-config.php
新增
define( 'SMTP_USER', 'user@example.com' ); // Username to use for SMTP authentication
define( 'SMTP_PASS', 'smtp password' ); // Password to use for SMTP authentication
define( 'SMTP_HOST', 'smtp.example.com' ); // The hostname of the mail server
define( 'SMTP_FROM', 'website@example.com' ); // SMTP From email address
define( 'SMTP_NAME', 'e.g Website Name' ); // SMTP From name
define( 'SMTP_PORT', '25' ); // SMTP port number - likely to be 25, 465 or 587
define( 'SMTP_SECURE', 'tls' ); // Encryption system to use - ssl or tls
define( 'SMTP_AUTH', true ); // Use SMTP authentication (true|false)
define( 'SMTP_DEBUG', 0 ); // for debugging purposes only set to 1 or 2
透過登入頁的忘記密碼功能可以測試寄信
helloworld 發表在 痞客邦 留言(0) 人氣(8)
如果nagios 發現異常要發送警告信給管理者
本機必須要有postfix或sendmail 之類的MTA
如果因為資安考量或其他因素不打算安裝
或是跑在docker 上,預設也沒有MTA,就無法發送信件
幸好nagios 非常地有彈性
可以改觸發其他scripts
以下範例改用 phpmailer 發送
編輯 /phpmailer/example/mail.php
#!/usr/bin/php
helloworld 發表在 痞客邦 留言(0) 人氣(4)
# apt-add-repository contrib
-bash: apt-add-repository: command not found
# apt-get install software-properties-common
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
gir1.2-glib-2.0 gir1.2-packagekitglib-1.0 libappstream4 libdw1 libgirepository-1.0-1 libglib2.0-bin libgstreamer1.0-0 libpackagekit-glib2-18 libpolkit-agent-1-0 libpolkit-gobject-1-0
libstemmer0d libunwind8 libyaml-0-2 packagekit packagekit-tools policykit-1 python3-dbus python3-distro-info python3-gi python3-software-properties unattended-upgrades
Suggested packages:
gstreamer1.0-tools appstream python-dbus-doc python3-dbus-dbg bsd-mailx default-mta | mail-transport-agent needrestart powermgmt-base
The following NEW packages will be installed:
gir1.2-glib-2.0 gir1.2-packagekitglib-1.0 libappstream4 libdw1 libgirepository-1.0-1 libglib2.0-bin libgstreamer1.0-0 libpackagekit-glib2-18 libpolkit-agent-1-0 libpolkit-gobject-1-0
libstemmer0d libunwind8 libyaml-0-2 packagekit packagekit-tools policykit-1 python3-dbus python3-distro-info python3-gi python3-software-properties software-properties-common
unattended-upgrades
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,792 kB of archives.
After this operation, 15.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
# apt-add-repository contrib
'contrib' distribution component enabled for all sources.
helloworld 發表在 痞客邦 留言(0) 人氣(12)
apt-get -y install 套件名
只會幫你一次安裝好套件
但如果中間出現對話框,還是會卡住
如果要跳過 prompt 過程
可以加上
DEBIAN_FRONTEND=noninteractive apt-get -y install 套件1 套件2
helloworld 發表在 痞客邦 留言(0) 人氣(10)
相關 OID
1.3.6.1.4.1.12356.101.4.1.3 : CPU使用率,單位 %
1.3.6.1.4.1.12356.101.4.1.4 : 記憶體使用率,單位 %
首先使用 snmpwalk 工具測試是否可以正常抓到數字
# snmpwalk -v2c -c public 10.1.1.254 1.3.6.1.4.1.12356.101.4.1.3
SNMPv2-SMI::enterprises.12356.101.4.1.3.0 = Gauge32: 0
# snmpwalk -v2c -c public 10.1.1.254 1.3.6.1.4.1.12356.101.4.1.4
SNMPv2-SMI::enterprises.12356.101.4.1.4.0 = Gauge32: 33
編輯 mrtg.cfg
# cpu
Target[CPU]: .1.3.6.1.4.1.12356.101.4.1.3.0&.1.3.6.1.4.1.12356.101.4.1.3.0:public@10.1.1.254
Title[CPU]: Procesor Usage
PageTop[CPU]: <h1>Procesor Usage</h1>
Options[CPU]: gauge, growright, nopercent
MaxBytes[CPU]: 100
YLegend[CPU]: pourcent
ShortLegend[CPU]: %
LegendI[CPU]: CPU usage
LegendO[CPU]: CPU usage
Legend1[CPU]: Total CPU Used
Legend2[CPU]: Total CPU Used
helloworld 發表在 痞客邦 留言(0) 人氣(44)
網路上文章通常只跟你講到第一個步驟
如果還是無法抓到 snmp 資料的話,請試試第二個步驟是否有設定
1. 首先到 系統管理 -> SNMP
啟動 SNMP 功能,並設定 SNMP v1/v2c 的community string,主機IP外
2. 還要到 網路 > 介面 > 把snmp 服務加入你要監控的介面上

helloworld 發表在 痞客邦 留言(0) 人氣(5)
系統運作一陣子後
如果發現swap 空間不足,但沒有空的 partition 或是沒有新增硬碟的打算
可以新增一個 swap file 來增加 swap空間
1. 先確認硬碟空間是否足夠
df -h
2. 假設我要把 swap file 建在 /swap/ 下
mkdir /swap
cd /swap
fallocate -l 1G /swap/swapfile01
chmod 600 swapfile01
mkswap swapfile01
swapon /swap/swapfile01
3. 檢查swap 使用狀況
swapon --show
4. 加入 /etc/fstab,下次重開機後自動掛載
/swap/swapfile01 none swap sw 0 0
helloworld 發表在 痞客邦 留言(0) 人氣(11)
有些人的解法是修改 docker 的iptables 設定,但可能會衍生出其他問題
所以建議以下作法
編輯 /etc/ufw/after.rules
到檔案下方新增以下內容
# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
helloworld 發表在 痞客邦 留言(0) 人氣(7)