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退出冻结。
time
expr
rsync
清理文件 脚本示例
ls -t data/xget.* | tail -n +2 | xargs rm -f
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
查看文件夹属性
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:~# 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为后缀的文件
-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
替换文件中的内容
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
查看某文件夹下文件的个数,包括子文件夹里的。
说明:
ls -lR|grep "^-"|wc -l
查看某文件夹下文件夹的个数,包括子文件夹里的。
ls -lR|grep "^d"|wc -l
grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
统计所有文件及子文件的个数
解压xz文件:
$tar -xvf ***.tar
解压bz2文件:
$bzip2 -d *.tar.bz2 $tar -xvf *.tar
查看系统内存状况
total used free shared buffers cached
Mem: 7991 7730 261 0 171 1604
-/+ buffers/cache: 5953 2037
Swap: 2047 595 1452
注:buffers/cache显示的是被系统缓存了的内存数据
端口类:
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:端口号
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
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 -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
进程前台运行和后台运行的转换
查看在后台运行的命令:jobs
将后台的命令调至前台继续执行:fg
(如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid))
将一个正在前台执行的命令暂停,并且放到后台:ctrl + z
将一个在后台暂停的命令继续执行:bg
修改文件所属用户和属组:chown -R 用户:用户组 file
CentOS桌面卸载:
yum groupremove "GNOME Desktop Environment"
yum groupremove "X Window System"
修改启动项,改为从文本启动:vi /etc/inittab
修改id后数字为3 -- id:3:initdefault: