linux常用命令

 

命令编辑及光标移动

ctrl + u:删除从开头到光标处的命令文本

ctrl + k:删除从光标到结尾处的命令文本

ctrl + a:光标移动到命令开头

ctrl + e:光标移动到命令结尾

ctrl w:删除一个词(以空格隔开的字符串)

 

计算程序运行时间

$ time ./fibo 30
the 30 result is 832040

real    0m0.088s
user    0m0.084s
sys    0m0.004s

 

 

屏幕冻结

程序运行时,终端可能输出大量的日志,你想简单查看一下,又不想记录日志文件,此时可以使用ctrl+s键,冻结屏幕,使得日志不再继续输出,而如果想要恢复,可使用ctrl+q退出冻结。

 
windows上的dos格式转换为unix格式
dos2unix file

time

expr

rsync

清理文件 脚本示例

# ls -t(按修改时间顺序) tail -n +2(从第二行开始输出) 从标准输入构建并执行命令
ls -t data/xget.* | tail -n +2 | xargs rm -f

wc命令主要对文件中的行数、字符数、字节数进行计数

-c 统计字节数,除非指定 -k 标志。如果指定 -k 标志,wc 命令统计字符数。
-k 统计字符数。指定 -k 标志等同于指定 -klwc 标志。如果把 -k 标志同其它标志一起使用,那么必须包含 -c 标志。否则,将会忽略 -k 标志。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
1字节(Byte)= 8位(bit)
在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,
中文字符占两个字节

示例:

ls -l / | grep "^-" | wc -l

 

ls -l  / | grep "^d" | wc -l

 

ls -lR / | grep "^-" | wc -l

 

查看文件夹属性

[razor@cobub01 ~]$ ll -ld .ssh
drwx------. 2 weifeng weifeng 4096 Dec 9 07:07 .ssh

非交互试修改密码

root@oite:~# echo "weifeng:1234" | chpasswd 

root@oite:~# echo "weifeng:1234" | chpasswd
[root@cobub-master ~]#echo "1234" | passwd --stdin username
或者
[root@cobub-master ~]# echo "weifeng:1234" | chpasswd

  

-e     enable interpretation of backslash escapes
-E     disable interpretation of backslash escapes (default)

  例如

root@oite:~# echo -e "SPARK_JAVA_OPTS+=' -Dspark.serializer=org.apache.spark.serializer.KryoSerializer -Dspark.kryo.registrator=org.apache.spark.graphx.GraphKryoRegistrator ' \nexport SPARK_JAVA_OPTS" >> spark-env.sh

root@oite:~# cat spark-env.sh
SPARK_JAVA_OPTS+=' -Dspark.serializer=org.apache.spark.serializer.KryoSerializer -Dspark.kryo.registrator=org.apache.spark.graphx.GraphKryoRegistrator '
export SPARK_JAVA_OPTS


root@oite:~# echo "SPARK_JAVA_OPTS+=' -Dspark.serializer=org.apache.spark.serializer.KryoSerializer -Dspark.kryo.registrator=org.apache.spark.graphx.GraphKryoRegistrator ' \nexport SPARK_JAVA_OPTS" >> spark-env2.sh

root@oite:~# cat spark-env2.sh
SPARK_JAVA_OPTS+=' -Dspark.serializer=org.apache.spark.serializer.KryoSerializer -Dspark.kryo.registrator=org.apache.spark.graphx.GraphKryoRegistrator ' \nexport SPARK_JAVA_OPTS

ntp时间同步

linux文件描述符

切换用户 

普通用户切换到root用户

su - root / su -

root用户密码...

如果不知道root用户的密码,可以通过sudo切换(前提是root给sudo开启了这个权限)

sudo  su - root

普通用户密码...

1) linux的7种运行模式总结;

2) linux系统的启动流程

/etc/inittab

runlevel  查看当前系统运行级别

init  切换运行级别 

grep 过滤

grep  -E  "a|b"  file

greo  -Ei  "a|b"  file  // 不区分大小写

egrep 相当于 grep  -E

示例:grep -vE 排除*.log和*.cfg为后缀的文件

[root@cobub04 ~]# ll
-rw-------. 1 root root 3333 Aug 26 13:06 anaconda-ks.cfg
-rw-r--r--. 1 root root 41364 Aug 26 13:06 install.log
-rw-r--r--. 1 root root 9154 Aug 26 13:04 install.log.syslog
-rw-r--r-- 1 root root 223784960 Sep 21 01:03 MySQL-5.6.26-1.el6.x86_64.rpm-bundle.tar
[root@cobub04 ~]# ll | grep -vE "*.log|*.cfg" | awk '{print $9}'
MySQL-5.6.26-1.el6.x86_64.rpm-bundle.tar
过滤掉sshd_config中的注释行和空行
egrep -v "^#|^$" /etc/ssh/sshd_config
排除自己
ps -ef|grep -v "grep"

替换文件中的内容

sed -i s#xxx#xxx#g file
例如 
sed -i   s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config
grep "disabled" /etc/selinux/config
~]# diff file1 file2
~]# vimdiff file1 file2
[root@cobub04 ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[root@cobub04 ~]# uname -r
2.6.32-573.8.1.el6.x86_64
[root@cobub04 ~]# uname -m
x86_64

查找大于100M的文件:find  filepath  -type  f  -size  +100(K/M/G)

[root@master01 ~]# find ./ -type f -size +100M

查看文件夹下文件的个数:ls  -l  dirname | grep  "^-"|wc -l 或者 find  dirname  -type  f|wc  -l

[razor@master01 ~]$ ls -l .|grep "^-"|wc -l

查看某文件夹下文件的个数,包括子文件夹里的。
说明:
ls -lR|grep "^-"|wc -l
查看某文件夹下文件夹的个数,包括子文件夹里的。
ls -lR|grep "^d"|wc -l
grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
[razor@master01 ~]$ find . -type f|wc -l

统计所有文件及子文件的个数

解压xz文件:

$xz -d ***.tar.xz
$tar -xvf ***.tar

解压bz2文件: 

$bzip2 -d  *.tar.bz2
$tar -xvf  *.tar

查看系统内存状况 

[root@web monitor]# free -m
                              total   used  free  shared  buffers  cached
Mem:                     7991  7730  261  0           171      1604
-/+ buffers/cache:            5953  2037
Swap: 2047 595 1452

 注:buffers/cache显示的是被系统缓存了的内存数据

端口类:

[root@cobub01 ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 31503/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1814/sshd

查看某端口被哪个进程占用:lsof -i:端口号

[root@cobub01 ~]# lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 31503 weifeng 469u IPv4 129933 0t0 TCP *:tproxy (LISTEN)

根据进程号pid查看具体是哪个应用:ps -ef|grep pid

[root@cobub01 ~]# ps -ef|grep 31503
weifeng 31503 31501 3 Sep07 ? 00:15:43 java -XX:MaxPermSize=192m -Djava.io.tmpdir=./tmp -Djava.net.preferIPv4Stack=true -Dcom.sun.jndi.ldap.connect.pool.protocol=plain ssl -Xms256m -Xmx768m -Djava.library.path=bin/jsw/lib
pidof   programName 
pgrep   programName
strace  -p  pid

  

kill命令

kill pid 相当于 kill -TERM pid ;用于结束不能捕捉到的进程

kill  -USR2  pid  // 平滑杀掉进程

kill -9 用法详解:kill -9 pid ;强制杀掉进程
kill -9, 这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。

改进( kill + xargs )
杀死进程的方式有以下几种:
a) ps -ef | grep firefox | grep -v grep | awk '{print $2}' | xargs kill -s 9
b) pgrep firefox | xargs kill -s 9
c) pidof firefox | xargs kill -s 9

d) kill -s 9 `ps -ef | grep firefox | grep -v grep | awk '{print $2}'`
e) kill -s 9 `pgrep firefox`
f) kill -s 9 `pidof firefox`

pkill 类似于 pgrep, pkill 表示 pgrep+kill
例如: pkill firefox
 参考推荐:Linux  kill,  killall,  kill  -9;

进程前台运行和后台运行的转换

查看在后台运行的命令:jobs

将后台的命令调至前台继续执行:fg

(如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid))

将一个正在前台执行的命令暂停,并且放到后台:ctrl + z

将一个在后台暂停的命令继续执行:bg

修改文件所属用户和属组:chown  -R  用户:用户组  file 

CentOS桌面卸载:

yum groupremove "KDE (K Desktop Environment)"
yum groupremove "GNOME Desktop Environment"
yum groupremove "X Window System"

修改启动项,改为从文本启动:vi /etc/inittab

修改id后数字为3 --   id:3:initdefault: