顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2019年11月10日 星期日

bash shell 批次更改圖片檔名範例

#!/bin/bash

files="img-1*"
start=1
rename=1
echo $count

for i in `ls $files`
do
  echo $i
  rename=$(($start * 2 - 1))
  #rename=$(($start * 2))
  start=$(($start + 1))
  echo $rename
  refilename=`printf "%02u" $rename`
  mv $i $refilename.tif

done

2019年10月22日 星期二

Ubuntu 18.04 安裝 Nginx+MySQL+PHP

安裝 Nginx, MySQL:
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install mysql-server

設定MySQL安全性設定:
sudo mysql_secure_installation

安裝PHP:
sudo apt-get install php-fpm php-mysql php-json php-gd

設定 php.ini,編輯 /etc/php/7.2/fpm/php.ini,將cgi.fix_pathinfo設為0
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=0

重新啟動PHP服務:
sudo service php7.2-fpm restart

設定一個新的nginx網站,以adia.cc為例。編輯 /etc/nginx/sites-available/adia.cc檔案:
server {
        listen 8080;
        root /var/www/adia.cc/html;
        index index.php index.html index.htm;
        access_log /var/log/nginx/adia.cc.access.log;
        error_log /var/log/nginx/adia.cc.error.log;
        server_name adia.cc www.adia.cc;
 
        location / {
                try_files $uri $uri/ =404;
        }
 
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
 
        location ~ /\.ht {
                deny all;
        }
}

建立adia.cc網站設定檔連結,並測試設定檔是否正確:
sudo ln -s /etc/nginx/sites-available/adia.cc /etc/nginx/sites-enabled/
sudo nginx -t

正確的話,應該會出現類似結果:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

接著建立一個PHP測試網頁,編輯 /var/www/adia.cc/html/info.php:
<?php
   phpinfo();
?>
重新啟動 Nginx 服務:
sudo service nginx restart

接下來利用瀏覽器測試 http://YOUR_IP/ 和 http://YOUR_IP:8080/info.php是否正常~
phpinfo() 執行結果


#

Ubuntu 18.04 安裝 SSH Server , 設定為文字開機模式 (disable GUI boot mode)

確定一下 Ubuntu 版本是否為 18.04:
lsb_release -a
執行結果:
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:        18.04
Codename:       bionic

安裝 SSH Server :
sudo apt-get install openssh-server
sudo update-rc.d ssh defaults
sudo service ssh start

關閉GUI開機模式,並且重開機生效:
sudo systemctl set-default multi-user.target
sudo sync;sync;sync;reboot

假若要再重新設定GUI開機模式:
sudo systemctl set-default graphical.target
sudo sync;sync;sync;reboot

設定 NTP 時間同步主機為 clock.stdtime.gov.tw,編輯 /etc/systemd/timesyncd.conf 檔案
sudo vi /etc/systemd/timesyncd.conf
將內容 #NTP= 前面註解符號(#)刪除,順便設定同步主機後存檔:
#NTP=
NTP=clock.stdtime.gov.tw

重新啟動時間同步服務後,順便看一下執行狀態:
sudo service systemd-timesyncd restart
sudo service systemd-timesyncd status

執行結果已經顯示同步 time server 從原來的 ntp.ubuntu.com 改為 clock.stdtime.gov.tw:
● systemd-timesyncd.service - Network Time Synchronization
 (...略...)
   Status: "Synchronized to time server 211.22.103.158:123 (clock.stdtime.gov.tw)."
 (...略...)

#

2018年11月14日 星期三

ubuntu 7-zip 安裝與使用

安裝指令
sudo apt-get install p7zip-full

執行壓縮: 7z a 壓縮檔案 目標來源
7z a demo.7z demo_path_or_file

執行加密壓縮: 7z a 壓縮檔案 目標來源 -p加密密碼
7z a demo.7zp demo_path_or_file -pMYPASSWD

執行密碼解壓縮: 7z x 壓縮檔案 -p加密密碼
7z x demo.7zp -pMYPASSWD

2018年10月19日 星期五

2016年5月15日 星期日

遠端 shutdown linux 系統

提供給自己的筆記: 

自 Ubuntu Linux 遠端 shutdown 的 Raspberry Pi ,可透過 ssh 指令協助達成:

ssh <username>@<ip> sudo /sbin/shutdown -h now

#

2015年4月17日 星期五

Mac OS X / *nix 找出目錄中檔案大小為0的檔案

給自己的備忘錄:

找出檔案 size = 0 :
> find $dirpath -type f -size 0 -exec ls {} \;

找出檔案 size > 100K
> find $dirpath -type f -size +100k -exec ls {} \;

找出檔案 size > 1M
> find $dirpath -type f -size +1M -exec ls {} \;

找出檔案 size > 1000 Bytes
> find $dirpath -type f -size +1000c -exec ls {} \;

#


2014年10月25日 星期六

ubuntu 設定開機直接進入文字 (text, console) 模式

vi  /etc/default/grub ,將原來
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

加上註解,並重新新增一行新設定,改為下列後存檔離開:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT="text"
接著執行更新開機GRUB設定
sudo update-grub
執行結果:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.11.0-15-generic
Found initrd image: /boot/initrd.img-3.11.0-15-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 12.04 LTS (12.04) on /dev/sda1
done
#

2014年8月14日 星期四

ubuntu 上安裝 Elasticsearch Cluster

1. 參考 Installing ElasticSearch on Ubuntu 14.04 ,分別在欲加入 Elasticsearch Cluster 的每部機器上完成安裝

### Install  Oracle Java (改安裝 Oracle Java)
cd /tmp
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
 
### Download and Install ElasticSearch ver 1.3.2
### Check http://www.elasticsearch.org/download/ for latest version of ElasticSearch and replace wget link below
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.deb
sudo dpkg -i elasticsearch-1.3.2.deb
 
### Install the Java Service Wrapper for ElasticSearch
curl -L http://github.com/elasticsearch/elasticsearch-servicewrapper/tarball/master | tar -xz
sudo mkdir /usr/local/share/elasticsearch
sudo mkdir /usr/local/share/elasticsearch/bin
sudo mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f /usr/local/share/elasticsearch/bin/service/elasticsearch` /usr/local/bin/rcelasticsearch
### Start ElasticSearch
sudo service elasticsearch start
 
### Make sure service is running
curl http://localhost:9200
 
### Should return something like this:
#{
# "status" : 200,
# "name" : "Storm",
# "version" : {
# "number" : "1.3.1",
# "build_hash" : "2de6dc5268c32fb49b205233c138d93aaf772015",
# "build_timestamp" : "2014-07-28T14:45:15Z",
# "build_snapshot" : false,
# "lucene_version" : "4.9"
# },
# "tagline" : "You Know, for Search"
#}

2. 分別修改每部機器上 /etc/elasticsearch/elasticsearch.yml 設定

cluster.name: elasticsearch
node.name: "elastic_your_nodename"

3. 重新啟動 elasticsearch

sudo service elasticsearch restart

4. 測試 Elasticsearch Cluster 是否有多個 node 出現?本例為2個nodes 

curl -XGET http://elastic_your_nodename:9200/_cluster/health?pretty

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 5,
  "active_shards" : 10,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}
#

2014年7月23日 星期三

ubuntu 安裝 nginx,並設定 virtual hosts

1. 安裝 nginx 與 PHP5

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install nginx
$ sudo apt-get install fcgiwrap php5-fpm php5-xcache php5-mysql php5-pgsql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl


2. 創建要放置網頁檔案的磁碟路徑(放在/var/www/之下)

$ sudo mkdir -p /var/www/yourdomain1.com/html
$ sudo mkdir -p /var/www/yourdomain2.com/html

$ sudo chown -R www-data:www-data /var/www/yourdomain1.com/html
$ sudo chown -R www-data:www-data /var/www/yourdomain2.com/html

$ sudo chmod -R 755 /var/www


3. 編寫 index.html

$ sudo vi /var/www/yourdomain1.com/html/index.html
$ sudo vi /var/www/yourdomain2.com/html/index.html

範例如下:

<html lang="zh-TW">
  <head>
 
    <title>page title</title>
    <script src="my-javascript-file.js"></script>
    <link href="my-css-file.css" rel="stylesheet"></link>
  </head>
  <body>
    <!-- 網頁內容就放在body內吧 -->
    Hello, yourdomain1.com <!-- 或是 yourdomain2.com -->
  </body>
</html>


4. 設定第一個網站設定檔

$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/yourdomain1.com
$ sudo vi /etc/nginx/sites-available/yourdomain1.com

修改設定檔內容:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/yourdomain1.com/html;
    index index.html index.htm index.php;

    server_name yourdomain1.com www.yourdomain1.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

5. 設定第二個網站設定檔

$ sudo cp /etc/nginx/sites-available/yourdomain1.com /etc/nginx/sites-available/yourdomain2.com
$ sudo vi /etc/nginx/sites-available/yourdomain2.com

修改設定檔內容,注意listen設定有些不同:

server {
    listen 80;
    listen [::]:80;

    root /var/www/yourdomain2.com/html;
    index index.html index.htm index.php;

    server_name yourdomain2.com www.yourdomain2.com;

    location / {
        try_files $uri $uri/ =404;
    }
}

6. 讓兩個網站的設定檔案生效

$ sudo ln -s /etc/nginx/sites-available/yourdomain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/yourdomain2.com /etc/nginx/sites-enabled/


7. 移除預設設定檔案

$ sudo rm /etc/nginx/sites-enabled/default


8. 修改 nginx.conf

$ sudo vi /etc/nginx/nginx.conf

將 server_names_hash_bucket_size: 64; 前面的註解符號 # 移除,然後存檔離開


9. 重新啟動 nginx

$ sudo service nginx restart


10. 修改 hosts,新增網站資料

$ sudo vi /etc/hosts

新增
192.168.1.80 yourdomain1.com
192.168.1.80 yourdomain2.com


11. 設定開機時,自動啟動nginx服務

$ sudo update-rc.d nginx defaults


#

2014年3月30日 星期日

ubuntu 安裝 SSH Server

先確認 /usr/sbin/sshd 是否存在,若已存在則繼續使用 ps -ef | grep ssh 確認 sshd (SSH Server) 是否執行。

若sshd檔案存在,只是尚未執行,可啟動ssd。

$ sudo /etc/init.d/ssh start


若以上皆確認不存在,則可以

$ sudo apt-get install openssh-server

進行安裝 SSH Server。

$ ssh localhost

設定開機時自動啟動 SSH Server。

$ sudo update-rc.d ssh defaults

測試一下

#

ASUS VC60 i3-3110M 安裝 ubuntu 14.04 (beta2)

先至 Ubuntu 官方網站下載 Ubuntu 14.04 (Beta 2) Desktop 64bits ISO
http://releases.ubuntu.com/14.04/ubuntu-14.04-beta2-desktop-amd64.iso

把iso檔案燒錄至USB隨身碟中,Windows 電腦可以使用 Win32 Disk Imager完成燒錄。

以Ubuntu 14.04 USB隨身碟開機,可試用、可安裝至ASUS VC60 i3-3110M的無作業系統版電腦。

測試結果:
Ubuntu 13.04 Desktop 64bits : 不支援VC60的無線網路卡、支援S/PDIF數位音效輸出及類比輸出
Ubuntu 13.10 Desktop 64bits : 無法完成開機(不知道原因為何)
Ubuntu 14.04 (Beta 2) Desktop 64bits : 支援VC60的無線網路卡、支援S/PDIF數位音效輸出及類比輸出

$ uname -a
Linux myhost 3.13.0-20-generic #42-Ubuntu SMP Fri Mar 28 09:56:33 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux


好機器,不買嗎?:P

#

2013年12月19日 星期四

ubuntu networking interface 設定


使用情境:
  • eth0固定網卡 / wlan0無線網卡 各一
  • 配置固定IP (eth0: 192.168.1.XX / wlan0: 192.168.1.YY)
  • private network : 192.168.1.XXX
  • gateway : 192.168.1.1

/etc/network/interfaces 設定檔內容:

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.XX
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
iface wlan0 inet static
wpa 2
wpa-ssid <YOUR_SSID>
wpa-psk <YOUR_PASSWORD>
address 192.168.1.YY
netmask 255.255.255.0
gateway 192.168.1.1


*以上也適用 Raspberry Pi / Wheezy 環境

#

2013年11月18日 星期一

Ubuntu precise amd64 安裝筆記


# apt-get update & 
sudo apt-get -y update
sudo apt-get dist-upgrade
sudo apt-get --no-install-recommends -y install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev libgdbm-dev ncurses-dev automake libtool bison subversion pkg-config libffi-dev vim

# install python
sudo apt-get install build-essential
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
cd /tmp
wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar -xvf Python-2.7.6.tgz
cd Python-2.7.6
./configure
make
sudo make altinstall

# install easy_install for python 2.7
cd ..
sudo apt-get install python-setuptools

# install Flask for python
sudo easy_install Flask

# prepare to install uwsgi, nginx
sudo useradd -r -g www-data -s /bin/false uwsgi
sudo mkdir -p /var/www/myapp
sudo chown uwsgi:www-data /var/www/myapp -R
sudo useradd -G www-data myuser
sudo usermod -a -G www-data myuser

# install uwsgi
sudo pip install uwsgi
sudo mkdir -p /var/log/uwsgi
sudo touch /var/log/uwsgi/myapp.log
cd /var/www/myapp
sudo vi uwsgi.xml
sudo /usr/local/bin/uwsgi -x uwsgi.xml

# install nginx
sudo apt-get install nginx
sudo service nginx start
cd /etc/nginx/
cd sites-enabled/
sudo vi default


uwsgi.xml

<?xml version="1.0"?>
<uwsgi id="myapp">
  <module>application:app</module>
  <socket>/tmp/uwsgi.sock</socket>
  <socket>127.0.0.1:8000</socket>
  <processes>4</processes>
  <chdir>/var/www/myapp</chdir>
  <pidfile>/tmp/myapp.pid</pidfile>
  <daemonize>/var/log/uwsgi/myapp.log</daemonize>
  <stats>/tmp/myapp.stats</stats>
  <log-format>``%(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) `` "%(referer)" "%(uagent)"</log-format>
  <uid>uwsgi</uid>
  <gid>www-data</gid>
  <chmod-socket>775</chmod-socket>
</uwsgi>

/etc/nginx/sites-enabled/default

server {
        listen 8080;
        root /var/www/myapp;
        server_name myapp;

        try_files $uri @uwsgi;
        location @uwsgi {
                include uwsgi_params;
                uwsgi_pass unix:/tmp/myapp.sock;
        }
}


2013年8月25日 星期日

ubuntu 安裝 easy_install 和 MySQL Connector/Python


  1. 安裝 easy_install
  2. > sudo wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
  3. 安裝 Mysql Connector/Python
  4. > sudo easy_install mysql-connector-python

範例程式
import mysql.connector
from mysql.connector import errorcode

try:
  cnx = mysql.connector.connect(user='userid', password='******',
                              host='127.0.0.1',
                              database='dbname', charset='utf8')
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exists")
  else:
    print(err)
else:
  cursor = cnx.cursor()
  query = ("SELECT * FROM tablename ORDER BY id DESC LIMIT 10;")
  cursor.execute(query)
  for i in cursor:
    print i
  cursor.close()
  cnx.close() 


延伸閱讀:MySQL Connector/Python 官網

#

2013年3月12日 星期二

組合的力量 - 再檢查一次 shell script 的第一行

近來發生了一件怪事,某一 shell script 在 console 環境下執行正常,但設定 cron job執行卻一直無法正常執行。

耐下性子,一步步、一行行找到底哪個指令出現問題:才發現執行到某一 for loop 就中斷了。把執行結果轉向某一記錄檔,內容卻也空空如也。

怪的是 console 環境下卻可以執行... ?!

忽然靈光一現! 難道 cron job 不是以bash shell環境來執行?

檢查shell script的第一行。賓果! 果然 #!/bin/bash 消失不見了!

加上 #!/bin/bash 之後。cron job執行也就正常。

提醒大家,務必養成良好習慣時時確認 shell script 的第一行是否指定了正確的shell環境來執行您的script喔~

#

2013年3月8日 星期五

組合的力量 - 計算文章中每個字的出現次數


sed "s/'s//g" filename |sed 's/[0-9]*//g' |sed 's/\W/ /g' | sed 's/ /\n/g' | tr '[:upper:]' '[:lower:]' | sort | uniq -c | sort -r


主要利用 sed 搜尋/取代、tr 大寫轉小寫、sort 排序 及 uniq 功能達成

#

2013年2月27日 星期三

組合的力量 - 擷取檔案名稱和延伸檔名


目錄底下一堆各式各樣檔案,只想要擷取檔案名稱或延伸檔案名稱方便進行後續處理的話,可以利用bash內建功能來取得:

檔名 = ${檔案名稱變數%.*};
延伸檔名 = ${檔案名稱變數##*.};

for file in `ls *.*`
do
  filename=${file%.*};
  echo $filename;
  extname=${file##*.};
  echo $extname;
done


如果想要取得目錄名稱:

目錄名稱 = ${完整檔案目錄名稱%/*};


fullname=/root/pathname/filename.extname
pathname=${fullname%/*};

#

2012年12月9日 星期日

ubuntu 文字模式下的 mp3 播放軟體

現安裝 mpg321 播放軟體:

> sudo apt-get install mpg321

安裝完成後,就可以直接透過 mpg321 在文字命令模式下播放 MP3 音樂檔。

> mpg321 *.mp3 &

#

ubuntu 文字模式下調整音量


console mode 下輸入 alsamixer 指令,就會出現如下文字模式的操作畫面:

> alsamixer

可利用鍵盤←與→選擇不同聲道,而↓則可調整音量大小。
完成選擇後,只要按下ESC 即可離開程式。

alsamixer 操作畫面

#