实用linux命令
1)查看一个文件夹下有多少个文件
ls *.*|wc –l
补充说明:
wc:
-l 统计行数
-w 统计单词数
-c 统计字节数
-m 统计字符数
2)统计一个文件的行数的命令(也就是可以统计一个项目的代码量)
wc -l 文件名,例如:
[root@Master java2cob]# wc -l java2cob.c
2053 java2cob.c
[root@Master java2cob]# wc -l *.c *.h
2053 java2cob.c 126 vmjava1.c 150 vmjava2.c 58 java2cob.h 26 messageeuc.h 26 messagesjis.h 26 messageus.h 29 messageutf8.h
2494 total
3)设置环境变量
export 环境变量名=“环境变量路径”
4)删除环境变量
unset 环境变量名
5)查看进程
ps –ef |grep
6)查看默认的线程栈大小
ulimit lu
7)通过编辑/etc/sysctl.conf文件可以修改以下参数
ernel.printk_ratelimit = 5
kernel.panic_on_oops = 1
kernel.pid_max = 360
kernel.sercons_esc = -1
kernel.overflowgid = 65534
kernel.overflowuid = 65534
kernel.pty.nr = 1
kernel.pty.max = 4096
kernel.random.uuid = 872329aa-2624-4fa4-941e-96148e6084f9
kernel.random.boot_id = c00708b8-abb1-46b4-9190-325b4e68da94
kernel.random.write_wakeup_threshold = 128
kernel.random.read_wakeup_threshold = 64
kernel.random.entropy_avail = 3616
sysctl –p命令重新加载sysctl.conf并立即使之生效。
8)显示系统下所有的用户组的命令
Groups
9)添加用户组的命令
groupadd 组名
10)查看OS的位数
Solaris 系统:isainfo –b
Linux 系统 :uname –m (查看系统位数) uname -a (查看系统位数及版本信息)
11)动态查看不断更新的文件内容
tail –f 文件名
12)打包文件的命令
tar –cvf 打包后包名 要打包的文件
13)查看内核版本: uname -a
more /etc/*release
more /etc/redhat-release
more /proc/version
查看CPU的信息:grep "model name" /proc/cpuinfo
more /proc/cpuinfo
查看CPU位数:getconf LONG_BIT
ls 如果在root下ls有lib64 文件夹说明系统64
查看libc、gcc版本:ldd /sbin/mii-tool
rpm -qa | grep glibc
gcc -v
查看内存信息:more /proc/meminfo
grep MemTotal /proc/meminfo
查询系统版本 : lsb_release -a
查看系统默认的locale:cat /etc/locale.conf 或者cat /etc/sysconfig/i18n
查看linux系统下路径名和文件名最大长度
由于文件名和路径名限制实际上是有文件系统有关系的,所以要用pathconf函数。
或者用getconf命令. 比如: $ getconf PATH_MAX /usr 1024 $ getconf NAME_MAX /usr 255 $
14)在修改查看文件时,用VI打开后显示行数
:set nu
15)按时间顺序显示列表
ls –lt
16)查找命令,在某个路径下找出含有某个名字的文件
find /var/opt/FSUNtd -name *core* -print
find . –name *.txt 在当前目录查找txt文件
find / -mount -name test -print (指定-mount选项,不要搜索挂载的其他文件系统的目录)
find . -newer while2 -print (在当前目录下搜索比文件while2更新的文件)
find . -newer while2 -type f -print (在当前目录下搜索比文件while2更新的文件,-type f指只显示文件,不显示目录)
find . –mtime -3 查找更新时间3天之内的文件
find /etc –type l 查找链接类型的文件
find . -size +1000000c 查找大于1M字节的文件
17)grep命令
在文本文件中寻找特定字符串,并将所有出现该字符串的行打印
grep abc file
grep “this is a book” file
ps –ef | grep inetd
grep -i root /etc/passwd //忽略大小写
grep -v root /etc/passwd //显示除了含有root的行
grep e$ words2.txt 查找以字母e结尾的行
grep a[[:blank:]] words2.txt 查找以字母a结尾的单词
grep Th.[[:space:]] words2.txt 查找以Th开头的由3个字母组成的单词
grep -E [a-z]\{10\} words2.txt 查找只有10个字符长的全部由小写字母组成的单词
另外还有类似的两个命令fgrep和egrep
18)用户管理
增加用户:
useradd [-c] [-d] [-g] [-m] [-s] username
-c 表示注释
-d 表示家目录
-g 表示属于哪个用户组
-m 表示若家目录不存在,则自动创建
-s 表示该用户使用的shell
username 用户名
例如:useradd -d /home/imsuser -g imsgroup -m -s /bin/sh imsuser
删除用户:userdel username
修改用户:usermod options username
修改密码:passwd [username]
增加用户组:groupadd
删除用户组:groupdel
切换用户(su:switch user):su - username
查看登录用户:who
19)进程管理
查询进程运行状况:ps
ps -e 列出现在正在运行的进程
ps -f 列出进程的详细信息
ps -u db2inst1 列出db2inst1用户的进程
ps -l 显示进程最详细的信息
信息解释:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 19773 19762 0 76 0 - 508 consta pts/4 00:00:00 login
0 S 0 19794 19773 0 75 0 - 685 consta pts/4 00:00:00 sh
0 R 0 32133 19794 0 78 0 - 890 - pts/4 00:00:00 ps
例如:
ps -ef |grep inetd
F表示当前进程的状态是16进制的
S:进程的状态,他的值有如下解释
O--正在运行的一个进程
S--休眠进程、等待事件唤醒
R--在进程队列中的进程,等待系统分配资源
Z--僵死进程,进程已经结束,父进程不在等待,但是僵死进程还在进程表中。
T--停止的进程
UID:进程属主ID,root用户的ID是0
PID:进程ID
PPID:Parent PID
C:CPU占有的百分比,0~100来表示
PRI:进程优先级,值越高,优先级越低
NI:优先级
ADDR:进程在内存中的地址
SZ:进程占用的内存大小
WCHAN:处理休眠事件的内存地址
TTY:启动进程的终端、如果TTY是“?”则表示进程是系统级的进程
STIME:进程启动时间
CMD:产生进程的命令,或父进程的命令
20)列出所有信号值:kill –l
21)vmstat:查看内存状态
22)id: 查看当前用户的id
who am i:查看当前用户
dmesg:从错误记录中收集诊断信息
23) chown
使用:chown [-R] owner:[group] 文件...
chown mary file 将文件 file 的文件主改为 mary
chown 150 file 将文件 file 的UID改为150
chown dualbase:informix tdfs 将tdfs文件修改为dualbase用户,informix用户组
24)ldd命令
1)作用:用来查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。它是glibc的一部分,由Roland McGrath和Ulrich Drepper维护:
ldd --version
2)ldd本身不是一个程序,而仅是一个shell脚本:
$ which ldd
/usr/bin/ldd
$ file /usr/bin/ldd
/usr/bin/ldd: Bourne-Again shell script text executable
3)ldd命令其实是依靠设置一些环境变量而实现的(也就是说ldd的作用只是设置一些环境变量的值)
如:LD_TRACE_LOADED_OBJECTS
只要设置其值非空即可。
$ export LD_TRACE_LOADED_OBJECTS=1
$ ls /usr
linux-gate.so.1 => (0xb7fac000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f93000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7f79000)
libacl.so.1 => /lib/libacl.so.1 (0xb7f70000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e0d000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7df4000)
/lib/ld-linux.so.2 (0xb7fad000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7df0000)
libattr.so.1 => /lib/libattr.so.1 (0xb7dea000)
撤销该环境变量,ls即又可以恢复正常使用:
$ unset LD_TRACE_LOADED_OBJECTS
$ ls /usr/
bin games include lib lib32 lib64 local sbin share src X11R6
更多的环境变量:
1、LD_TRACE_LOADED_OBJECTS
2、LD_WARN
3、LD_BIND_NOW
4、LD_LIBRARY_VERSION
5、LD_VERBOSE
6、LD_DEBUG
ldd默认开启的环境变量是:LD_TRACE_LOADED_OBJECTS=1
其他的变量(和值)分别对应一些选项:
-d, --data-relocs -> LD_WARN=yes
-r, --function-relocs ->LD_WARN和LD_BIND_NOW=yes
-u, --unused -> LD_DEBUG="unused"
-v, --verbose -> LD_VERBOSE=yes
LD_TRACE_LOADED_OBJECTS为必要环境变量,其他视具体情况。
更为详细的命令选项(或者参看man、info):
$ ldd --help
25)dos下查看命令的返回值
echo %errorlevel%
linux下是:echo $?
26)查看一个文件的编码格式
file 文件名
例如:
[root@Master mk3]# file J3BASP01.ans
J3BASP01.ans: ASCII text
27)安装语言包命令localedef
比如要安装zh_CN.GBK,可以执行下面的命令:
sudo localedef -f GBK -i zh_CN zh_CN.GBK
要安装ja_JP.PCK,可以执行下面的命令:
sudo localedef -f PCK -i ja_JP ja_JP.PCK
28)tee命令
可以将通过管道的数据流截获并放进某个文件,也就是将中间结果保存到一个文件中去
$(date; who) | tee save |wc
29)sort 命令
# ls | sort -f 按字母表的顺序将文件名排序
30)sed命令
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
调用sed命令的两种形式:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
举例如下:
sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印
sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
sed -e "s/#LOCAL#/UCS2BE /" c_base/${P}.c |
iconv -f eucJP -t UTF-8 | sed -f UTF8.scr >${P}.c
这个命令是将文件 c_base/${P}.c中的每一行#LOCAL#用UCS2BE替换,然后将其进行编码转换(由eucJP格式转化为UTF-8)
然后使用sed脚本UTF8.scr,按照里面的命令要求将进行编码转换后的文件再进行过滤