2010年10月21日 星期四

計算輸出的訊息的整體資料:wc

以下轉載至鳥哥~http://linux.vbird.org/
--
wc

如果我想要知道 /etc/man.config 這個檔案裡面有多少字?多少行?多少字元的話, 可以怎麼做呢?其實可以利用 wc 這個指令來達成喔!他可以幫我們計算輸出的訊息的整體資料!
[root@www ~]# wc [-lwm]
選項與參數:
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字元;

範例一:那個 /etc/man.config 裡面到底有多少相關字、行、字元數?
[root@www ~]# cat /etc/man.config | wc
141 722 4617
# 輸出的三個數字中,分別代表: 『行、字數、字元數』

範例二:我知道使用 last 可以輸出登入者,但是 last 最後兩行並非帳號內容, 那麼請問,我該如何以一行指令串取得這個月份登入系統的總人次?

[root@www ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l

# 由於 last 會輸出空白行與 wtmp 字樣在最底下兩行,因此,我利用 # grep 取出非空白行,以及去除 wtmp 那一行,在計算行數,就能夠瞭解囉!

wc 也可以當作指令?這可不是上洗手間的 WC 呢!這是相當有用的計算檔案內容的一個工具組喔!舉個例子來說, 當你要知道目前你的帳號檔案中有多少個帳號時,就使用這個方法:
『 cat /etc/passwd | wc -l 』啦!
因為 /etc/passwd 裡頭一行代表一個使用者呀! 所以知道行數就曉得有多少的帳號在裡頭了!而如果要計算一個檔案裡頭有多少個字元時,就使用 wc -m 這個選項吧!

修改檔案時間或建置新檔: touch

以下轉載至鳥哥~http://linux.vbird.org/
--
修改檔案時間或建置新檔: touch

[root@www ~]# touch [-acdmt] 檔案

選項與參數:
-a :僅修訂 access time;
-c :僅修改檔案的時間,若該檔案不存在則不建立新檔案;
-d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
-m :僅修改 mtime ;
-t :後面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]

2010年10月18日 星期一

nohup.out删除後對於執行nohup.out的進程會有影響嗎?

以下轉載至http://bbs.chinaunix.net/thread-558213-1-1.html
--
nohup.out删除后,对执行nohup的进程有影响吗?
一个指令,用nohup的方式执行, 如 “#nohup cmd &” 它会在当前目录下生成一个nohup.out的log文件,现在删除这个nohup.out文件,会对执行的cmd这个命令有影响吗?
Ans:
会。
如果这个命令还在运行的话,但是影响的大小看你程序的类型。
你可以用cp /dev/null nohup.out把它清空,可以释放磁盘空间,而且对程序没有影响

2010年10月17日 星期日

linux常用命令 - ps指令

--
关键字:
ps(processstatus)

功能说明:报告程序状况

语法:ps[ aAcdefHjlmNVwy][acefghLnrsSTuvxX][ C 指令名称][ g 群组名称][ G 群组识别码][ p 程序识别码]
[p 程序识别码][ s 阶段作业][ t 终端机编号][t 终端机编号][ u 用户识别码][ U 用户识别码][U 用户名称][ 程序码]
[ cols 每列字符数][ columns 每列字符数][ cumulative][ deselect][ forest][ headers][ help][ info]
[ lines 显示列数][ no headers][ group群组名称][ Group 群组识别码][ pid 程序识别码][ rows 显示列数]
[ sid 阶段作业][ tty 终端机编号][ user 用户名称][ User 用户识别码][ version][ width 每列字符数]

备注:ps 是用来报告程序执行状况的指令,您可以搭配 kill 指令随时中断,删除不必要的程序

参数:
-A 显示所有程序
-N 显示除了下指令终端外的所有程序
-a 显示所有终端下的程序,除了 session leaders
-d 除了 session leaders 外的所有程序
-e 显示所有程序
T 显示现行终端本身的所有程序
a 显示现行终端本身的所有程序,包括其他使用者
g 显示现行终端本身的所有程序,包含 group leaders
r 显示现行终端本身正在執行的程序
x 显示所有程序,不以终端来区分
--deselect 与-N作用相同
-C 显示指令名称
-G 显示指定的群组(RGID)程序 (也可以使用群组名称)
-U 显示指定的用户(PID)程序 (也可以使用用户名称)
-g 显示 session leader 或群组名称
-p 显示指定的 PID
-s 指定 sessions 程序,显示所有其下的程序
-t 显示指定的 tty
-u 显示指定用户的程序(也可以使用用户名称)
U 显示指定用户的所有程序(也可以使用用户名称)
p 显示指定的 PID
t 显示指定的 tty
--Group 同 -G 参数
--User 同 -U 参数
--group 同 -G 参数
--pid 显示指定的程序 ID
--sid 显示指定的 session ID
--tty 显示指定的 tty
--user 同 -U 参数

输出格式控制参数
-c 显示 CLS, PRI 列项
-f 显示 UID,PPIP,C 与 STIME 列项
-j 工作控制格式显示
-l 长格式显示
-y 不显示 flags 列项,並以 rss 取代 addr 列项
X 老 Linux i386 登录格式显示
j 工作控制格式显示
l 长格式显示
s 程序信号格式显示
u 使用者格式显示
v 虚拟内存格式显示

输出格式变更
-H 以树状结构显示,以体现程序间的关系
-m 显示所有执行者
-w 以宽格式显示
S 显示的所有的程序且包含已中断的程序
c 显示真正的指令名称
e 显示指令的执行环境
f 以 ASCII 字符显示程序的树状结构,以表示程序间的关系
h 不显示信息的标题
m 显示所有执行者
n WCHAN 与 USER 列项以数字输出
w 宽格式显示
--cols 设定屏幕宽度
--columns 设定屏幕宽度
--cumulative 同 S 参数
--forest 以 ASCII 字符显示程序的树状结构,以表示程序间的关系
--no-headers 与 h 参数相同
--lines 设定屏幕高度
--rows 设定屏幕高度
--width 设定屏幕宽度

指令信息
-V 显示指令版本
L 列出所有列项及其说明
V 显示指令版本
--help 显示指令的帮助
--info 显示排错信息
--version 显示指令版本

如果只看到ps指令(2个字母而已)你可能会,但看到其参数你估计就只能...下面列出了常用的几个参数组合

ps axu
可以让我们得到系统内所有使用者正在执行的所有程序.通常使用axu的目的是观察系统运行的状态或者观察daemon启动的状态

ps axu | grep [pattern]
同ps axu的作用一样,不过会在ps axu的输出数据中查找匹配pattern的信息

ps ex -U [PID|用户名称]
一般用来观察某个使用者在系统中存在的所有程序,并显示执行指令的环境变量

vmware 網路設定實例

轉載自http://www.wretch.cc/blog/httw/1729282
--

vmware 網路設定實例二 : windows xp host + linux guest

上一篇寫了一個vmware的設定的一個案例,主要關於linux host+windows guest的情況,適用於經常跑linux而把windows當成副業的朋友。發布以後反應不大,後來發現更多人使用windows host 來跑linux guest的居多 ,且有很多文章談到網路問題,自己想沒有那麼難吧,就試了一把,把過程寫下來希望對網路有問題的朋友有所幫助。
版權屬yunqing所有,首發chinaunix.net,轉貼引用請包含此行聲明

正文:

本人使用的是vmware workstation 4.52,host機器運行的是windows Xp professional ,如果你還在使vmware workstation 4.0建議下載一個升級包,不過我想即使不做問題也不大。

1。安裝 vmware workstation,很簡單,一路ok過去,相信大部分朋友已經裝好。

2。創出新的guest系統。選擇類型。因為我以發生問題最多的redhat 9做試驗,所以就選redhat linux,選custom,網路類型選host-only(如果你已經安裝好 了,用了nat或bridge也沒有關係,在虛擬機的屬性裡改成hostonly就行了。)

3。創好建後啟動虛擬機,插入安裝rh9的第一張光碟。選擇自訂安裝,我只保留了gonme, X, 和graphical internet,節省安裝空間和時間。

4。安裝過程很順利,沒有問題,完成後重新啟動虛擬機,發現在更新fstab的時候掛掉了,估計是連接cdrom軟碟機時候超時。kill掉虛擬機,更改 設定,把光碟機和軟碟機的autoconnect when power on清除掉。重啟虛擬機,沒有問題,進入最後設定,音效卡,圖形界面均沒有問題。

5。按照要求在虛擬機裡安裝vmware-tool,對滑鼠和圖形介面進行更好的支援。
如果你在圖形界面下,首先要切換到文字模式。
右鍵點選桌面,打開一個終端機
在終端機裡:
su
#/sbin/telinit 3
圖形界面消失,按 Enter 幾下,在文字模式下登入。
在windows的vmware的視窗選單中選vm->install vmware tools
在虛擬機中:
su
mount /dev/cdrom /mnt/cdrom
cd /tmp
tar zxf /mnt/vmware-linux-tools.tar.gz
cd vmware-tools-distrib
./vmware-install.pl
回答並設定顯示器解析度,除了解析度需要選擇外,直接按 Enetr 就行了。
返回到預設的圖形界面(運行級別5)
/sbin/telinit 5

6.登入虛擬機,打開一個終端機:
/sbin/ifconfig
發現eth0沒有起來。
不要驚慌。
-------------以下是網路設定---------------
7。到windows XP 中,查看所有的網路連接,你應該發現除了原有的網卡之外,又多了Vmnet1和Vmnet8。如果你看了一下說明應該知道,vmnet1是 hostonly的接口,而Vmnet8是使用NAT的網路接口。在這裡我們既不想用VMWARE自帶的DHCP也不想用他的NAT所以我們知關心 VMnet1
在進一步操作之前先說一下idea:
我們將使用hostonly這個網路接口連接虛擬機和主機,然後利用windows Xp/2000裡面自帶的internet連接分享(實際上是一個簡單的路由NAT)來讓虛擬機 通過原來的網卡連接外部網路。
那麼為什麼不使用橋接的方式呢,我在前一篇文章(linux host + windows guest)裡面已經有些討論,請參考。不過最現實的原因是橋接需要一個不同於 原主機上的另外一個獨立的IP地址,這對於有些情況(IP和MAC綁定,網管不同意),比較難辦到。
OK, let's go
(1)查看你的連接外部網路的網卡的內容,選擇“高級”標籤,設定成允許共享,並設定允許的網路接口為VMNET1,如下圖。

(2)再插看一下你的VMnet1 的屬性,看一下TCP/IP的設定,你發現已經被自動設為192.168.0.1/255.255.255.0,如下圖。

(3)windows下的設定完成,轉入到跑linux的虛擬機。將你的eth0的ip地址設定為靜態的(如果安裝時沒有選靜態的話)
(4)windows下的設定完成,轉入到跑linux的虛擬機。將你的eth0的ip地址設定為靜態的(如果安裝時沒有選靜態的話)。
按紅帽子圖標->系統設定->網路(或其它你瞭解的方法)
ip: 192.168.0.2(或其它在此網域上的IP )
netmask: 255.255.255.0
default gateway: 192.168.0.1
dns:輸入你自己的DNS
保存設定。如果你還沒有設定好主機名稱:
cd /etc/sysconfig
vi network
編輯HOSTNAME
cd /etc
vi hosts
加入:
192.168.0.2 yourhostname
重新啟動服務
su
/sbin/service network restart
(4)測試一下
IP: ping 192.168.0.1
dns: ping dnsserver

文章來自:http://www.bjdown.com/article/8817.htm

2010年10月13日 星期三

宣告矩陣過大(佔用超過2GB記憶體) 在PGI fortran 編譯所需要增加的語法

for PGI fortran
from http://mpc.uci.edu/man/pgf90.html
--
適用於可動陣列
-Mlarge_arrays -Mnolarge_arrays (default)
(linux86-64 only). Allow (don't allow) arrays larger than 2GB; -Mlarge_arrays is default with mcmodel=medium.

適用於固定陣列
-mcmodel=small|medium
(AMD64 and IA32/EM64T only) Use the memory model that limits objects to less than 2GB (small) or allows data sections to be larger than 2GB (medium); implies -Mlarge_arrays

2010年10月3日 星期日

test -s file 模式為wgrib2格式大量解碼小技巧

原計畫JMA基本場共計有46個層場須解碼,考慮在JMA_GSM_tau_yyyymmddhh中即使給相符合字串(match string)進行搜尋,也可能發生找不到對應層場資料的問題,故必須使用其wgrib2解碼時找到相符合字串時,會自動回傳至螢幕(預設echo)的特性,將回傳輸出(echo)至測試檔中123.txt,接著使用sh判斷(test -s filename),如果檔案存在且大於零則能確定有解碼,若無內容則表示該時間點無該筆對應層場資料,以程式幫忙補上-9999缺值。

# man test

--

-s FILE

FILE exists and has a size greater than zero

如何在fortran中讀寫文件時不換行

轉載至http://hi.baidu.com/cbsasyf/blog/item/c50515caa008558dc9176883.html
--

转自ifelseif的博客

如何在fortran中读写文件时不换行?这是个极简单又极复杂的问题,简单到只要一个字符,复杂到翻破了好几本语法书也没找见。fortran中默认一条read或者write结束之后就换一行,但是读和写还有些不太一样。
读文件时,read之后如果写了一个数组,就像这样:
read(10,*)Y(1:n)
整整一行数就全都读到数组里了。但是如果用write,写到文件中却不是这个样子,会给你一个超级长的文件然后每行只有一个数。有一个选项叫ADVANCE='YES'/'NO',可以控制输入输出语句完了之后要不要换行,默认是'YES',很不幸,在intel的fortran中这个选项只对read起作用,write依旧不行。
在fortran的输入输出中,"/"表示换行,那么"\"表示什么意思呢,就是“不换行”。这是我在网上逛了老半天才看到的,为了防止忘记,写到博客里面,立此存照。
下面是一段fortran代码样例,要处理的数据20个数就会换一行,一般来讲最后一行是不满20个数的,需要用个同余判断一下

PROGRAM MAIN
IMPLICIT NONE
INTEGER I,J,NY,A,B
REAL X,Y(60),Z(60)

OPEN(UNIT=10,FILE='SX-RIVER.TXT')
OPEN(UNIT=11,FILE='SX-OUTPUT.TXT')

DO I=1,9
READ(10,*)
END DO

DO I=1,372
!!!!!!!!! DATA INPUT !!!!!!!!!!!!!!!!
READ(10,"(18X,I2,1X,F7.3)")NY,X
CALL MOD(20,NY,A,B)
DO J=1,A
READ(10,"(20(1X,F7.2))")Y(20*(J-1)+1:20*J)
END DO
DO J=1,B
READ(10,"(1X,F7.2)",ADVANCE='NO')Y(20*A+J)
END DO
READ(10,*)
DO J=1,A
READ(10,"(20(1X,F7.2))")Z(20*(J-1)+1:20*J)
END DO
DO J=1,B
READ(10,"(1X,F7.2)",ADVANCE='NO')Z(20*A+J)
END DO
READ(10,*)
!!!!!!!!! DATA OUTPUT !!!!!!!!!!!!!!!
!WRITE(11,"(I4,1X,F7.3)")NY,X
WRITE(11,"(1X,F7.2,\)")Y(1:NY)
WRITE(11,*)
WRITE(11,"(1X,F7.2,\)")Z(1:NY)
WRITE(11,*)
END DO

CLOSE(10)
CLOSE(11)
STOP
END PROGRAM MAIN
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! SUBROUTINE FOR CONGRUENCE(TONGYU) !
! Y=A*X+B !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE MOD(X,Y,A,B)
IMPLICIT NONE
INTEGER X,Y,A,B,TMP
A=1
TMP=X
DO WHILE(Y.GT.TMP)
A=A+1
TMP=TMP+X
END DO
A=A-1
B=X-(TMP-Y)
RETURN
END SUBROUTINE MOD

Dia免費的流程圖軟體(可輸入中文)

轉載至 http://dia-installer.de/download.html
--
10/07
如何能夠輸入中文~??
本來找了上面網頁說的
還要進去改指令

嘗試了使用大叔說的直接更改輸入法
直接從剛剛網頁的第六步驟開始做起即可輸入中文啦~~~
不用特別進去修改指令

這樣方便很多哩~~:)

7-Zip壓縮、解壓縮軟體安裝與使用

轉載至 http://edumeme.blogspot.com/2008/01/7zip.html