Linux 命令行总结
1、使用ln不加参数,会创建硬链接,如果要创建软连接,需要加-s 参数。
# ln test1 test8 -rw-r--r-- 5 root root 0 Nov 4 15:07 test1 -rw-r--r-- 5 root root 0 Nov 4 15:07 test8
2、使用-s 参数,会创建软连接。
# ln -s test1 test9 lrwxrwxrwx 1 root root 5 Nov 4 15:19 test9 -> test1
3、使用cp -s 同样也可以创建软连接。
# cp -s test1 test10 lrwxrwxrwx 1 root root 5 Nov 4 15:21 test10 -> test1
4、stat命令可以提供文件系统上某个文件的所有状态信息。
# stat test2 File: `test2' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 267778 Links: 5 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-11-04 15:07:34.551721265 +0800 Modify: 2016-11-04 15:07:34.551721265 +0800 Change: 2016-11-04 15:17:39.042608528 +0800
5、file命令可以用来查看文件类型的工具
# file test4 test4: symbolic link to `test1' #符号连接,test4链接到test1
6、cat -n 查看文件的时候加行号
# cat -n test1.sh 1 #!/bin/bash 2 #print hello world in the console window 3 a="hello world" 4 echo $a
7、cat -b 只在文本行前添加行号,空白行不添加行号
# cat -b test1.sh 1 #!/bin/bash 2 #print hello world in the console window 3 a="hello world" 4 echo $a
8、实时检测进程 top:第一行显示了当前时间、系统的运行时间、登入的用户数以及系统的平均负载。平均负载有三个值:最近一分钟的、最近5分钟的、最近15分钟的平均负载。值越大说明系统的负载越大,如果系统的负载超过2,就说明系统比较繁忙了。
top - 15:45:18 up 198 days, 4:40, 8 users, load average: 0.10, 0.04, 0.01 Tasks: 1354 total, 1 running, 1352 sleeping, 0 stopped, 1 zombie Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 66001880k total, 13323228k used, 52678652k free, 290580k buffers Swap: 16777212k total, 18948k used, 16758264k free, 2260564k cached
9、sort的用法,数字排序 sort -n
# cat file1 1 4 3 9 6 7
# sort -n file1 1 3 4 6 7 9
排反序加参数 -r,sort -nr
# sort -nr file1 9 7 6 4 3
1
sort -t 参数来指定字段分隔符,-k参数用来指定排序的字段
# sort -t ':' -k 3 -n /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin
10、使用du -sh |sort -nr 对目录的文件大小进行排序
# du -sh * | sort -nr 240M work 4.0K test.txt 4.0K small.pyc 4.0K small.py 4.0K data.txt 4.0K changer.py
11、tar 打包和解压缩
# tar -cvf test.tar file1 file2 file1 file2
# ls file1 file2 test.tar
# tar -xvf test.tar file1 file2
12、 环境变量:环境变量分为两类,全局变量和局部变量。
查看全局变量 printenv
MAIL=/var/spool/mail/root PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/ibutils/bin:/root/bin PWD=/root/wangtao/work/shell/20160930 KDE_IS_PRELINKED=1 LANG=en_US.UTF-8 MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles LOADEDMODULES= KDEDIRS=/usr SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass HISTCONTROL=ignoredups SHLVL=1 HOME=/root LOGNAME=root QTLIB=/usr/lib64/qt-3.3/lib CVS_RSH=ssh
查看单个环境变量时,必须在环境变量的名称前放置一个$符。
# echo $HOME /root
13、set命令会显示为某个特定进程设置的所有环境变量,设置局部环境变量,,记住在环境变量名称,等号和值之间没有空格。
# test=testing # echo $test testing
14、在子进程中设置了一个局部环境变量,一旦你推出了环境变量,那个局部环境变量就不能用了。
# bash # test=testing #echo $test testing #exit exit #echo $test #
15、设置全局环境变量,创建全局环境变量的方法是先创建一个局部环境变量,然后在把它导出到全局环境中,注意在导出局部环境变量时,不能用美元符($)去引用变量名。
# test="testing a long string" echo $test testing a long string # export test # bash # echo $test testing a long string
16、删除环境变量
删除一个已经存在的环境变量,可以使用unset.
# echo $test testing a long string # unset test # echo $test #
17、PATH环境变量,冒号分隔的shell查找命令的目录列表,设置PATH环境变量
# echo $PATH /usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/bin/intel64:/usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/mpirt/bin/intel64:/usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/debugger/gdb/intel64_mic/py26/bin
echo $PATH PATH=$PATH:/home/usr/test
18、登陆shell
当你登陆shell,bash shell 会作为登陆shell启动,登陆shell 会从4个不同的启动文件里读取命令,下面时bash shell处理这些文件的次序。/etc/profile文件时bash shell的主启动文件。
/etc/profile $HOME/.bash_profile $HOME/.bash_login $HOME/.profile
19.可变数组
# mytest=(one two three four five) # echo $mytest one # echo ${mytest[2]} three # echo ${mytest[*]} one two three four five
20、使用命令别名,使用alias -p 可以查看已有的别名列表
# alias -p alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mc='. /usr/libexec/mc/mc-wrapper.sh' alias mv='mv -i' alias rm='rm -i'
你也可以使用alias命令创建自己的命令别名
# alias li='ls -il'
21、添加用户,使用useradd命令使用系统的默认值以及命令行参数来设置用户账户。
# /usr/sbin/useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
可以使用useradd -D -s 来修改用户参数
# useradd -D -s /bin/tsch You have mail in /var/spool/mail/root [root@mail ~]# [root@mail ~]# [root@mail ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/tsch SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
删除用户 可以使用userdel -r 选择删除用户的HOME目录和mail目录
/usr/sbin/userdel -r test
22、使用linux组
/etc/group文件,/etc/group文件包含系统上用到的每个组的信息。(组名, 组密码, GID, 属于该组的用户列表)
# cat /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon tty:x:5: disk:x:6: lp:x:7:daemon mem:x:8: kmem:x:9: wheel:x:10:
创建新组groupadd
# /usr/sbin/groupadd shared # tailf /etc/group pcp:x:486: squid:x:23: sfcb:x:485:root radiusd:x:95: tcpdump:x:72: screen:x:84: slocate:x:21: zjq:x:501: www:x:502: shared:x:503:
可以使用usermod命令来添加用户到该组
# /usr/sbin/usermod -G shared test [root@mail ~]# tail /etc/group pcp:x:486: squid:x:23: sfcb:x:485:root radiusd:x:95: tcpdump:x:72: screen:x:84: slocate:x:21: zjq:x:501: www:x:502: shared:x:503:test
使用groupmod -n 修改组名,现在已经将组名shared改为sharing.
/usr/sbin/groupmod -n sharing shared [root@mail ~]# tail /etc/group pcp:x:486: squid:x:23: sfcb:x:485:root radiusd:x:95: tcpdump:x:72: screen:x:84: slocate:x:21: zjq:x:501: www:x:502: sharing:x:503:test
23、文件系统日志方式
数据模式: 索引节点和文件都会被写入日志;丢失数据风险低,但性能差
排序模式: 只有索引节点数据会被写入日志,但只有数据成功写入后才删除;性能和安全之间的良好折中
ext4: ext4文件系统支持压缩和加密,ext4文件系统还支持一个称作区段的特性。
磁盘格式化分区与挂载
# sudo fdisk /dev/sdc p 显示当前分区表 n 添加一个新分区 p 推出,不保存更改 w 将分区表写入磁盘 格式化 mkefs 创建一个ext文件系统 mke2fs 创建一个ext2文件系统 mkfs.ext3 创建一个ext3文件系统 mkfs.ext4 创建一个ext4文件系统 #sudo mkfs.ext4 /dev/sdc1 #sudo mkdir /mnt/testing #sudo mount -t ext4 /dev/sdc1 /mnt/testing #这种挂载文件系统的方法只会临时挂载该文件系统。当重启linux系统时,文件系统不会自动挂载,要强制linux在启动时自动挂载这个新文件系统,可以将文件系统添加到/etc/fstab文件按中。
#最流行的文件系统时ext3和ext4,这两个文件系统都提供了日志文件系统。
24、内核模块
Linux的内核模块文件的命名方式通常为<模块名称.ko>,CentOS系统的内核模块被存放在/lib/modules/`uname -r`.
lsmod 命令用来显示当前Linux内核模块状态,模块名称,占用内存大小,是否被使用。
# lsmod Module Size Used by vboxsf 42558 3 bnep 18895 2 rfcomm 58045 0 bluetooth 391253 10 bnep,rfcomm 6lowpan_iphc 18262 1 bluetooth joydev 17113 0 snd_intel8x0 37321 2 snd_ac97_codec 105860 1 snd_intel8x0 ac97_bus 12642 1 snd_ac97_codec snd_pcm 87194 2 snd_ac97_codec,snd_intel8x0 snd_seq_midi 13324 0
modprobe命令可以动态加载喝卸载内核模块:
# modprobe ip_vs #动态加载ip_vs模块 root@adonis:~# lsmod | grep ip_vs #查看模块是否加载成功 ip_vs 116816 0 nf_conntrack 87794 1 ip_vs libcrc32c 12543 1 ip_vs root@adonis:~# modprobe -r ip_vs #动态卸载ip_vs模块 root@adonis:~# modinfo ip_vs #查看内核模块信息 filename: /lib/modules/3.16.0-30-generic/kernel/net/netfilter/ipvs/ip_vs.ko license: GPL srcversion: E99FD4CE8D7CC74AC469649 depends: nf_conntrack,libcrc32c intree: Y vermagic: 3.16.0-30-generic SMP mod_unload modversions 686 signer: Magrathea: Glacier signing key sig_key: 3C:66:A9:3E:B5:D1:A5:68:11:66:B6:81:A5:17:93:8D:08:1E:4D:C7 sig_hashalgo: sha512 parm: conn_tab_bits:Set connections' hash size (int)
25、wc 显示文件行数
# wc -l /etc/passwd 40 /etc/passwd
显示文件的单词个数
# wc -w /etc/passwd 63 /etc/passwd
26、限制用户的进程数为200,在/etc/security/limits.conf文件末尾中加入一行,root用户不会受影响
* hard nproc 200