实用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)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除15行,第二条命令用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,按照里面的命令要求将进行编码转换后的文件再进行过滤

原文地址:https://www.cnblogs.com/honglihua8688/p/3683126.html