Linux常用命令汇总
Linux文件系统根目录
/
切换目录
cd /home/hadoop
显示当前目录
pwd
清屏
clear
显示文件
ls
ll
显示所有文件(包括隐藏文件):ls -a
查看文件或目录的权限:ls -l test.xml 或ls -l input/
统计文件行数:
wc -l 201207301510.sta
zcat 1510.sta.gz |wc –l
find命令
在根目录下查找文件:find / -name "hadoop-0.20*"
查看文件内容:只能查看,不能编辑
cat /etc/hosts
新建目录
mkdir
删除文件或目录
rm -fr /etc/.hosts.swp
rm –fr /home/hadoop/*
拷贝文件:
拷贝文件或目录,指明源和目标:scp –r /home/hello/App /home/hadoop/
本机拷贝文件
cp –r test.log testcopy.log
cp *.c /home/hadoop/
拷贝到sim2机器
scp –r oracle.tar.gz sim2:/opt/
拷贝多个文件/目录到sim2机
$ scp /etc/ora* im2:/etc/
压缩与解压缩
压缩:tar zcvf oracle.tar.gz /opt/oracle
解压缩:tar zxvf oracle.tar.gz
例如:
将/home/aa目录直接打包为aa.tar.gz压缩包:tar -zcvf hadoop.tar.gz /home/hadoop 解压缩hadoop.tar.gz为原文件/夹:tar -zxvf hadoop.tar.gz
编辑命令:vi
i,I:插入命令,i 在当前光标处插入I 行首插入。ESC键退出插入模式。
:q 退出,修改后未存盘不能退出
:q! 不存盘,强制退出
:wq 存盘并退出
:x 存盘并退出(等同于:wq命令)
dd 非编辑状态下,dd可以删除行
一直按上下箭头键,可以翻页
当vi /etc/hosts时提示该文件是只读状态,删除锁文件就可以了。
rm -fr /etc/.hosts.swp
解决suse linux vi编辑器问题
vi /etc/vimrc
加入:set bs=2
Linux环境变量
全局环境变量:/etc/profile
hadoop用户环境变量:/home/hadoop/.bash_profile
root用户环境变量:/root/.bash_profile
Profile生效:
执行下面命令可以使profile配置即时生效
[hadoop@hadoop ~]$ source /etc/profile
安装/运行bin文件
bin文件是二进制文件,进入到它的目录中,直接运行即可
./jdk-6u31-linux-i586.bin
安装/卸载rpm文件
安装:# rpm -ivh VRTSvcsor-4.1.40.00-MP4_SLES10.i586.rpm
卸载:# rpm –e VRTSvcsor-4.1.40.00-MP4_SLES10.i586.rpm
检测软件的安装包:rpm -qa | grep VRTS
top -c
查看每个进程,具体是哪个应用程序在运行
ctrl + c
中断退出执行的命令
让进程或服务在后台运行:
COMMAND [args] &
如:hive --service hiveserver 10000 &
这样,即使用exit命令退出本shell,或关闭本shell,进程或服务也在后台运行
将普通用户提权到root用户
sudo su – hadoop
有时会提示输入hadoop用户的密码
新增用户hadoop,并加入到群组users中:
useradd –m –g users hadoop
useradd –m –g ifengdev liujb
-m表示为用户新建用户目录
将已有用户mapred加入到用户组hadoop:
gpasswd -a mapred hadoop
设置用户hadoop密码
passwd hadoop
删除用户
userdel –r hadoop
-r表示同时删除该用户目录
新增群组:groupadd
删除群组:groupdel
groups:查看当前登录用户的组内成员
groups hadoop:查看hadoop用户所在的组,以及组内成员
软连接:
ln -s 源文件/目录目标文件/目录(即别名)
ln -s /usr/lib/hadoop-0.20/ /usr/lib/hadoop
删除软连接:rm –fr /usr/lib/hadoop
但不能是rm –fr /usr/lib/hadoop/,没有最后面的斜杠/
chown:递归指定user目录下所有文件的拥有者为ifengdev群组的hadoop用户:
chown -R hadoop:ifengdev /home/user/
chgrp:改变文档或目录之群组拥有权
命令格式:chgrp [-R] groupname name (name 可为档名或目录名)
举例说明:chgrp vlsi file1 将文档file1 之群组拥有权,改为vlsi 群组。chgrp -R image dir1 递归将目录dir1及所有文档和子目录改为image 群组。
递归将目录下所有子目录与文件,设为该档案拥有者,与其所属同一个群组者可读可执行,不可写入:chmod -R ug+r+x-w *
递归设置user目录下所有文件为可读可写可执行:
chmod -R 777 /home/user/
chmod -R ugo+r+x+w /home/user/
以上两种方式效果等同。
查看进程:ps –ef|grep java 或ps aux|grep java
ps 命令用于查看当前正在运行的进程
ps -ef | grep java
ps aux | grep java
-aux 显示所有状态,grep是搜索
杀进程:kill 2987 或kill -9 2987,-9表示强制杀进程
查看某机器的端口是否开通,很多时候ping是被禁止的,可以用telnet来查看连通性:telnet 223.203.209.24 80
大部分Linux系统下都是默认安装了ssh的,只需要启动ssh服务即可。
可以使用命令:service sshd start/stop/status
或者:/etc/init.d/sshd start
SSH开启后会有一个进程SSHD在运行,可以用netstat -nap 命令查询得到,例如:
$ netstat -nap | grep -i sshd
tcp 0 0 :::22 :::* LISTEN 29391/sshd
配置免密码SSH
cd /home/hadoop/.ssh
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
scp authorized_keys tongjibuz161://home/hadoop/.ssh
查看端口:
netstat -anp 显示系统端口使用情况
netstat -nltp|grep 50000 显示占用50000端口的连接情况,列出进程名称netstat -tlp|grep 50000 显示占用50000端口的连接情况,列出进程名称netstat -an|grep 50000 显示占用50000端口的连接情况
lsof –i:3306 显示占用3306端口的进程是mysql
查找命令:
find /home/hello/app –name ‘*hello*.log’
查看Linux版本:
[root@idata-61 ~]# cat /etc/issue
CentOS release 6.2 (Final)
Kernel \r on an \m
查看硬盘空间:
df -lh
du -h --max-depth=1 ./
./表示当前目录,也可为绝对路径
两者区别:
1、若有进程在占用某个文件,而其他进程把这文件删掉,只会删除其在磁盘中的标记,而不会释放其占用的磁盘空间;直到所有访问该文件的进程退出为止。
2、df 是从内核中获取磁盘占用情况数据的,而du是统计当前磁盘文件大小的结果,由于磁盘标记已被删掉,因此du 不会计算上述被删除文件的空间,导致df 与du的结果不一致。
3、lsof | grep deleted:查看在磁盘上标记已被删掉,但是仍然被其它进程占用的文件。
4、lsof -u root | grep bash:查看root运行bash的进程
查看内存:
free –m
查看CPU信息:
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)
关闭SElinux
0、编辑配置文件:vi /etc/selinux/config
SELINUX=disabled
1、快速关闭SElinux,使用如下命令就可以:
/usr/sbin/setenforce 0 立刻关闭SELINUX
/usr/sbin/setenforce 1 立刻启用SELINUX
关闭防火墙:
(1)重启后永久性生效:
开启:chkconfig iptables on
关闭:chkconfig iptables off
(2)即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop
Redhat中IP地址的设置是在/etc/sysconfig/network-scripts/ifcfg-ethX中设置的,一个IP对应一个ifcfg-ethX文件,所以设置多个IP就会有多个ifcfg-ethX文件。
绑定固定IP
修改/etc/sysconfig/network-scripts/ifcfg-eth0,如下:
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.10
NETMASK=255.255.255.0
NETWORK=192.168.1.0
GATEW AY=192.168.1.1
HWADDR=【具体的硬件地址】
ONBOOT=on
TYPE=Ethernet
重启网络设置
#service network restart //重启所有网络设置
或:
#ifconfig eth0 down //down掉eth0网卡
#ifconfig eth0 up //启动eth0网卡
DNS配置
配置dns的文件为/etc/resolv.conf
修改hostname
vi /etc/sysconfig/network,修改HOSTNAME 一行为"HOSTNAME=主机名"(没有这行?那就添加这一行),然后运行命令“hostname 主机名”。一般还要修改/etc/hosts文件中的主机名。
这样,无论主机是否重启,主机名都修改成功。
wget
不创建目录:wget -r -np -nd http://119.254.74.24/logs/media_wap/
创建目录:wget -r -np -x http://119.254.74.24/logs/media_wap/
Apache的安装目录:/usr/local/apache2
Apache的web目录:/var/www/html
运维部门在标准部署系统后,Apache的web目录修改为:/data/ifengsite/htdocs/
开机启动服务:
1、方法1
[root@inner-2 ~]# chkconfig --list|grep httpd //检查httpd状态,不是开机启动
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@inner-2 ~]# chkconfig --add httpd && chkconfig httpd on//设为开机启动
[root@inner-2 ~]# chkconfig --list|grep httpd //检查httpd状态,为开机启动
httpd 0:off 1:off 2:on 3:on 4:on 5:on6:off
2、方法2
我可以把vncserver设置成系统的服务,并启动起来,使用如下命令查看vncserver是否已经是系统的服务
#chkconfig --list|grep vnc
vncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
现在我们要设置vncserver开机自启动,使用如下命令
#chkconfig --level 5 vncserver on
#chkconfig --list|grep vnc
vncserver 0:off 1:off 2:off 3:off 4:off 5:on 6:off
这个时候重启系统,那么vncserver就会以服务的方式自动起来,但是现在如果想立即使用vnc则直接敲命令vncserver即可
3、方法3
我们可以把vncserver这条命令写在Linux开机要运行的脚本里面,那些脚本是Linux开机时要执行的呢?
我知道的有以下这些:
/etc/rc.local
/etc/rc.sysinit
/etc/inittab
/etc/profile
这里记住Linux服务于Linux开机自启动之间的区别和联系
程序启动脚本加入开机启动服务
vi /etc/rc.local 或
vi /etc/rc.d/rc.local
加入应用程序启动脚本,如:
echo "Start DataInterface for Tongji......"
/home/hadoop/tongjiInterface/bin/Starter.sh
echo "Start Monitor for tongji, with Tomcat as the Application Server......"
/usr/local/apache-tomcat-7.0.29/bin/catalina.sh start
Linux开机自启动服务的配置
●suse开机自启动脚本:/etc/init.d/boot.local
RedHat开机自启动脚本:/etc/rc.d/rc.local
●如:定时任务自启动,在boot.local脚本末尾加上命令:/sbin/service crond start
FTP服务自启动,在boot.local脚本末尾加上命令:/sbin/service vsftpd start
●说明:boot.local是在network前启动的,所以依靠网络服务的服务需要自己手动写一个启
动脚本,参考/etc/init.d/里的例子,如:VCS的自启动脚本:/etc/init.d/vcs
保存并设置vcs脚本文件的读写权限:#chmod 777 vcs
用chkconfig设置服务运行:#chkconfig --add vcs
service命令
如:service vsftpd start失败,提示未被识别的命令,所谓命令,当然是指service未被识别了。做如下检查:
1、在/etc/init.d/目录看看能不能找到vsftpd
find /etc/init.d|grep vsftpd
2、使用/etc/init.d/vsftpd start看是否可以启动
3、vsftpd是编译的,有没有在编译之前,系统自带有vsftpd,如果有,那么编译时指定单独路径,并且在编译后的路径下去启动vsftpd,也可以把启动加入到系统服务。
网络流量监控工具
iptraf
[root@inner-14 home]# yum install iptraf -y
[root@inner-14 home]# iptraf
定时运行crontab
自动定时任务,与当前user关联
显示:crontab -l
编辑:crontab –e,与vi类似,按i键编辑
●以sat用户(注意不能是root用户),执行crontab -e命令进入系统定时任务编辑,设置为每月1日凌晨1点运行:0 1 1 * * /home/sat/app/bcintf/bin/BcintfStarter.sh
注:需要确定sat用户有权限执行启动脚本BcintfStarter.sh
●例如:*/1 * * * * 表示每分钟执行一次;0 1 1 * * 表示每月1日的凌晨1点运行。
●启动和关闭定时任务:以root用户,执行以下命令重启/启动定时任务
RestHat Linux:service crond restart
Suse Linux:service cron restart
* * * * * /home/sat/app/bcintf/bin/BcintfStarter.sh
前5个字段为5个*,分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:
*:表示任何时刻
,:表示分割
-:表示一个段,如第二端里:1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。
也可以写成1-23/1
如:1-59/2 * * * * /home/sat/app/bcintf/bin/BcintfStarter.sh,表示每2分钟执行一次,而且指定从第1分钟开始,就是奇数分钟执行。
Linux系统中添加硬盘、分区、格式化、加载
●挂载/卸载光驱:mount /dev/cdrom /home/sat/temp | umount /home/sat/temp
●查看硬盘信息:在console中运行fdisk –l,显示Disk /dev/sda、Disk /dev/sdb,说明硬盘是SCSI设备
●给硬盘sdb分区:fdisk /dev/sdb
m(回车) //查看命令帮助
n(回车) //创建一个分区
p(回车) //primary partition (1-4)
partion number:1(回车)
first cylinder 1:(回车)
last cylinder 1305:(回车)这个硬盘只分一个区
w(回车)写入与退出
●格式化分区为ext3格式:mkfs.ext3 /dev/sdb
●手动挂载|卸载硬盘:mount /dev/sdb /home/sat/temp |umount /home/sat/temp
●让硬盘启动自动挂载:vi /etc/fstab
增加一行:/dev/sdb /opt/oracle/product ext3 defaults 0 0
●或许需要reboot
2、定时运行
●以sat用户(注意不能是root用户),执行crontab -e命令进入系统定时任务编辑,设置为每月1日凌晨1点运行:0 1 1 * * /home/sat/app/bcintf/bin/BcintfStarter.sh
注:需要确定sat用户有权限执行启动脚本BcintfStarter.sh
●启动和关闭定时任务:以root用户,执行service cron restart命令重启/启动定时任务
●例如:*/1 * * * * 表示每分钟执行一次;0 1 1 * * 表示每月1日的凌晨1点运行。
关机(root用户)
halt
重启系统(root用户)
reboot
设定系统时间(root用户)
date -s 12:50:00
设置系统日期(root用户)
date -s 01/05/2014 ——2008年4月11日
确保时间修改生效
clock –w