Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts
Thursday, January 03, 2013

Quickly delete tons of files in Linux

test: find command with '-delete' flag

Ref: [SteveKamerman.com]deleting-tons-of-files-in-linux-argument-list-too-long

Thursday, June 30, 2011

Transfer text file between Windows and Linux

最近遇到的問題,普通的.txt檔案在windows上跟在linux上看起來沒什麼差別,但是事實上如果用HEX mode或是用Notepad++顯示所有字元,就會注意到差別! 換行字元的差別!!

ASCII字元表裡的10( LF , line feed), 13(CR, carriage return)都有換行的作用,看到一篇文章裡有稍微解說:
Mac OS X開始是用LF,較舊的版本是用CR
Unix系統下,是用LF 
愛搞怪的窗戶是用CRLF...

當我透過FTP把檔案從windows丟到linux上之後,每行資料最後的換行符號都從CRLF變成LF,整個檔案的長度就變了... 影響了程式執行的結果。於是就查了要怎麼避免這個行為,還滿簡單的,不過不知道就沒轍。

只要把FTP的傳輸模式改為binary mode即可。用command line做FTP的可以參考reference 2號,用UI的話,我是用fileZilla,在選單"傳輸>傳輸型態”裡可以選擇。就這樣,再傳一次,果然,換行符號就不會因不同系統而改變了。

ref:

  1. How to Transfer Text Files Between Linux, Macintosh, and Microsoft Windows Operating Systems
  2. [中正大學電算中心] 第五章 檔案傳輸協定-FTP
Wednesday, June 09, 2010

新手上路之: read/write NTFS driver for Linux

在進行了一個月的笨蛋異地備份方法之後,實在是受不了了...=   = 用WinSCP透過網路連到linux系統去拉檔案時在是太麻煩了... 尤其單個檔案很大時,超容易失敗OTZ

其實事情好像也滿容易解決的,只是因為對方是production,時在不敢直接在上面做實驗,只好花了兩天自己裝了一台機器,在上面做測試,成功!!

Environment: enterprise linux release5(update5)+ntfs-3g-2010.5.22

  1. 先下載NTFS-3G
  2. 丟到系統內並解壓縮
  3. 直接進入解壓縮的資料夾內,依照文件以root身份做一下三件事情:

    # ./configure
    # make
    # make install

  4. 沒錯! 這個moment就已經完成安裝了
  5. 接著就可以接上USB硬碟,並且辨識一下他的裝置名稱。這本書說linux會把USB視為scsi裝置,所以他的device name會是/dev/sd?(視你原本系統的裝置決定,像我的系統是用IDE硬碟,裝置是hda, hdb開頭,所以第一個scsi裝置就會是sda)
  6. 確定好裝置名稱之後,就可以把它mount起來(以/usb為mountpoint)

    # mount –t ntfs-3g /dev/sda1 /usb

  7. 完工!! =D

Ref:

  1. NTFS-3G
  2. 在Linux下使用USB拇指碟及外接式硬碟
Thursday, May 13, 2010

Linux例行性工作排程by crontab

env: Red Hat Enterprise Linux 5

如果要在linux上排定一些類似檔案備份的例行性排程,可以利用crontab這指令。

step1: 準備好要下的指令,通常都會先編一個.sh file, 像這樣:

[say_hello.sh]

#!/bin/bash

echo say hello `date` >> log.txt

    上面這個檔案會印一行say hello跟系統時間在log.txt這個檔案裡
    像這樣: say hello Wed May 12 16:20:01 CST 2010

step2: 使用crontab排程

$ crontab -e

-e是edit的意思。下了這個指令後會進入vi編輯畫面。都未曾使用過crontab的話內容就是一片空白。

step3: 新增工作排程

crontab的內容有固定格式,一個工作一行,大概長像這樣:

20 16 * * * /home/oracle/say_hello.sh

先簡單說一下這條工作內容: 每到16:20執行say_hello.sh
指令的結構是這樣(詳細說明請參閱[鳥哥]基礎文件CH16)

指令
0-59 0-23 1-31 1-12 0-7 指令=  =

這邊要注意指令裡有用到任何檔案,都要用絕對路徑。
編輯完存檔退出後,會有一行訊息: crontab: installing new crontab
表示排程已經排定。如果要檢視所有排定的工作,可以下:

$ crontab -l

step4: 就等囉~

等到已經排定的時間,你可能會發現.... 失敗了=   =,並且會收到一封mail,由root(Cron Deamon)寄出,內容最後有一行類似這樣的訊息:

/bin/sh: /home/oracle/say_hello.sh: Permission denied

permission denied… 也不知道在deny什麼鬼,因為明明可以在自己的環境裡直接下"sh /home/oracle/say_hello.sh"執行這個script。一直以為是路徑的問題(阿不就是寫完整路徑!?),改來改去就是不行。

最後發現竟然真的是權限問題,下"ls -l"可以看到新建的script檔權限長這樣:
-rw-r--r--
owner自己竟然沒權限執行.... orz||,chmod一下

$ chmod u+x /home/oracle/say_hello.sh

確認一下執行權限-rwxr--r--
再重新安排一次時間比較近的排程試試看,應該就OK囉。

linux排程初體驗,成功!!!

Ref:

  1. [鳥哥] 第十六章、例行性工作排程 (crontab)
  2. Disable The Mail Alert By Crontab Command

Tags