首页 > 代码库 > Linux常用命令总结

Linux常用命令总结

Linux文件的目录结构:树状结构,/为最高的根目录

技术分享

root:root用户的个人文件夹(家目录)
bin:存放多数用户可用的命令
boot:存放启动文件和配置信息,系统启动时会用
dev:存放设备文件,/dev/hdc代表光驱
etc:存放服务配置文件
home:其他用户的家目录
lib:存放程序运行所需要的库文件
media:可移动设备的挂载目录
mnt:设备挂载目录
usr:用户程序存放目录
var:存放经常改动的数据文件
tmp:存放临时文件
sbin:存放维护系统所需命令,一般仅root可用
proc:存放核心运行时产生的文件,这些文件位于内存而非硬 盘中
sys:与proc类似,设计比proc更清晰,文件位于内存
srv:服务需要的数据的存放目录
lost+found:文件系统修复时找回的丢失文件
opt:额外软件安装目录
misc:不方便归类的杂项文件
selinux:SELinux文件系统实例

 

查看一个命令的参数及用法:
命令 --help

 

用户管理:
id:可以查看当前用户
[lhy@besttest ~]$ id
uid=501(lhy) gid=501(lhy) 组=501(lhy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
whoami:查看当前的用户
[lhy@besttest ~]$ whoami
lhy
who:查看当前已经登录的用户数
[lhy@besttest ~]$ who
root pts/0 2017-05-11 21:41 (192.168.20.1)
root pts/1 2017-05-11 22:53 (192.168.20.1)
w:查看当前已经登录的用户数
[lhy@besttest ~]$ w
22:58:21 up 2:09, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.20.1 21:41 0.00s 0.11s 0.00s w
root pts/1 192.168.20.1 22:53 1:41 0.03s 0.03s -bash

添加用户
useradd lhy #添加用户
useradd -g groupname uername #添加用户时候制定加入的组名
passwd lhy #给添加的用户加密码、还可以重置密码
用户默认的家目录就是在/home/目录下:
[root@besttest ~]# cd /home/
[root@besttest home]# ls
lz

对目录(文件夹)的操作
pwd 显示当前你所在路径
cd 进入哪个目录(文件夹)

~ 波浪线代表家目录:
快速回到家目录:
cd ~
cd

切换用户:
[root@besttest ~]# su lhy
[lhy@besttest root]$ ls → root目录是超级用户root的家目录(普通用户的家目录在/home下)
ls: 无法打开目录.: 权限不够
[lhy@besttest root]$ exit
exit
[root@besttest ~]# su lhy
[lhy@besttest root]$ exit
exit
[root@besttest ~]# su - lhy
[lhy@besttest ~]$
[lhy@besttest ~]$ pwd
/home/lhy
[lhy@besttest ~]$ su lz → 当前用户是lhy,不是超级用户,要切换到lz用户就需要输入密码
密码:
su username
su - username
区别就是su - 会重新加载用户的环境变量

sudo 获取超级用户权限
添加普通用户的sudo权限:
/etc/sudoers文件,找到 root ALL=(ALL) ALL 这一行,在它下面加入
username ALL=(ALL) NOPASSWD:ALL然后保存即可
加好了之后其它用户输入"sudo su-"就可以切换超级用户了
sudo -s 切换root用户,不会加载环境变量

删除用户(必须使用root用户才能操作)
userdel username
userdel -r xw 删除用户的时候也删除它的家目录

 

组管理:
添加组
groupadd name
删除组
groupdel name

 

文件操作:
创建文件夹
mkdir
mkdir -p /tmp/besttest/blk

删除文件夹
rm -rf /
rmdir:只能删除空文件夹

查看文件下面的东西:
ls -l == ll
ll
ls -a

改名
mv besttest linux
mv besttest /tmp
mv如果后面跟的是文件名改名,如果后面跟的是路径是移动

复制
cp ax /tmp/ 复制文件
cp -r linux /tmp/ 复制文件夹
cp -rf linux

重命名: 

alias lhy=‘cd /opt/lampp‘
永久生效的话,加到/etc/profile这个里面

路径:
/顶级目录,相当于Windows的我的电脑
相对路径:相当于当前路径
绝对路径:实际的路径
cd ..#回到上一级目录
cd ../../#回到上两级目录
cd - 返回上一次所在的目录

 

权限:
所有者的权限 同一组的权限 其他用户的权限
rw- r-- r--
rwx分别代表读、写、执行的权限

加权限:
x代表执行 w代表写 r代表读
chmod o+x 其他用户
chmod g+x 本组用户
chmod u+x 自己
chmod +rwx 所有
chmod a+x 所有
去掉权限,就是把+变成-
r=4 w=2 x=1 数字模式代表的权限
chmod 755 file
如果加权限的是一个文件夹的话要加 -R

chown 改变文件的所有者
chown file user
如果是一个文件夹的话要加 -R
[root@besttest tmp]# ll SqlTest
-rw-r--r--. 1 lhy lhy 8038 5月 11 16:55 SqlTest
[root@besttest tmp]# chown lz SqlTest
[root@besttest tmp]# ll SqlTest
-rw-r--r--. 1 lz lhy 8038 5月 11 16:55 SqlTest

chgrp 改变文件的所属组
chgrp file group
如果是一个文件夹的话要加 -R
[root@besttest tmp]# ll
总用量 12
-rw-r--r--. 1 lhy root 0 1月 20 20:52 aa
-rw-r--r--. 1 root root 472 1月 20 20:40 test
[root@besttest tmp]# chgrp lhy aa
[root@besttest tmp]# ll
总用量 12
-rw-r--r--. 1 lhy lhy 0 1月 20 20:52 aa
-rw-r--r--. 1 root root 472 1月 20 20:40 test

 

wc -l file 统计行数:
|管道符:连接两条命令,把前面的命令执行结果给后面的命令处理
[root@besttest tmp]# cat test |wc -l
33
[root@besttest tmp]# ls |wc -l
5
&& 连接两条命令,先后执行
[root@besttest tmp]# ls && wc -l test
aa bitrock_installer.log test yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
33 test
sh startup.sh && tail -f /logs/catlina.out

 

对文件的编辑操作:
vi:
切换编辑模式和命令模式:
i:当前位置
o:当前行的下一行
a:下一位置进行编辑
esc:编辑模式切换到命令模式
退出vi:
命令模式下:
退出:
":q"#没有修改的话可以直接退出
":q!"#不保存退出
":wq"#保存退出
":x"#也是保存退出
查找:
/test 从头开始找
?test 从文件末尾开始找
显示行号: ":set nu"
取消显示行号: ":set nonu"
快去去到某一行:":num"
快速到文件末尾:shift+g
x:删除单个字符
dd:删除整行
19dd:删除19行
u:撤销
yy:复制一整行
19yy:复制19行
p:粘贴
.:重复前一次操作
$:移动光标到行尾
0:移动光标到行首
替换字符串:
":%s/src_str/new_str/g"

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
vim:
在命令模式下ctrl+v 进入可视化编辑模式,选择多列
shfit+i 进入编辑模式,输入想加的内容
再按esc

 

查看文件:
cat
more
less
tail -f
ln /opt/lampp/xampp ~/wxy

查找:
find / -name mysql #查找文件/文件夹
grep xxx file 查找文件内容、进程
[lhy@besttest ~]$ grep select /tmp/SqlTest
select * from Student;
select * from Student where id between 2 and 4;
select id,name,department from Student;
select * from Student where Department="计算机系" or Department="英语系";
grep -v 过滤掉指定的关键字
grep -w 匹配指定字符串
tail -f /opt/lampp/logs/access_log |grep lhy

查看进程:
ps -ef|grep mysql|grep -v grep 查找进程,并且不显示grep进程
ps只是显示你执行那一时刻的状态
top 动态的查看进程,但是不能查找

杀进程:
kill -9 pid 杀进程 可以跟多个pid
nohup ./jmeter-server & 在后台运行某个程序

du -sh * 可以看到当前目录下所有文件的占用空间
du -sh dirname
df -h 可以看到当前磁盘已经使用了多少

上传、下载:
ftp工具:直接拖拽、什么都可以上传,要sftp协议
rz、sz命令可以直接上传下载,但是它不能上传文件夹
rz、sz会话选项x/y/zmodem设置上传下载目录
Rzsz命令安装:使用yum安装,yum –y install lrzsz,
编译安装:http://blog.chinaunix.net/uid-20639775-id-154615.html

 

开关机、重启:
关机
shutdown -h 30 #定时关机
shutdown -h now #立即关机
init 0 #立即
reboot 重启
shutdown -r 20 "我要重启啦" 定时重启

注销用户
exit

 

网络:
ip a
ifconfig
dhclient#自动获取ip

压缩、解压文件
tar cvf linux.tar linux #直接打包,前面是包的名字,后面是你要给谁打包
tar zcvf linux.tgz linux# #压缩
tar zcvf linux.tar.gz linux #压缩
tar xvf linux.tar linux #解压,不管你压缩没压缩都能解开
zip linuz.zip linux 打zip包 → zip需要自己yum
unzip linuz.zip
gzip file 只能对文件打包,打包完原来的文件就没有了,需要自己yum
gunzip file.gz

重定向:
cat xx > new_xx 覆盖原有的内容
>xx.log → 清空日志,不需要重启服务
cat xx >> new_xx 追加

定时任务:
crontab -e 编辑定时任务
crontab -l 查看当前有哪些定时任务
crontab 文件的格式为“M H D m d cmd”。
其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,*代表每分钟都执行
* * * * * sh /opt/lampp/test.sh 表示每分钟执行一次test.sh这个脚本
*/5 * * * * sh /opt/lampp/test.sh 表示每5分钟执行一次test.sh这个脚本
30 21 * * * /usr/local/apache/bin/apachectl restart 表示每晚的21:30重启apache
示例:
crontab -e
* * * * * touch /tmp/lhy
[root@besttest ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
到/tmp文件夹下查看:
[root@besttest tmp]# ls
bitrock_installer.log crontab.SjF8er SqlTest yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
[root@besttest tmp]# ll lhy
-rw-r--r--. 1 root root 0 5月 12 07:50 lhy
[root@besttest tmp]# ll lhy
-rw-r--r--. 1 root root 0 5月 12 07:51 lhy

 

查看端口号:

netstat -nlpt|grep 18983 #查询这个进程号启动端口号是什么
netstat -nlpt|grep port #可以查看这个端口号有没有被占用

 

环境变量:
环境变量的作用就是让一个脚本/命令随便在哪个目录下都能用
系统环境变量:/etc/profile → 对所有用户都生效
用户环境变量:~/.bashrc → 用户的家目录
ls -al展示目录下所有的文件,包括隐藏文件"."开头的都是隐藏文件
系统总装了一个mysql,将mysql的目录加入环境变量中
自己也有个用户,自己装个mysql,这时候有两个mysql,想用自己的mysql,环境变量中加了之前的mysql,那么这时候,可以将自己的mysql配在用户的环境变量中
export PATH=$PATH:
source /etc/profile
source ~/.bashrc

/etc/profile环境变量修改:
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done

unset i
unset -f pathmunge


export PATH=$PATH:/tmp → 配置环境变量
"/etc/profile" 81L, 1821C written
[root@besttest tmp]# ls
aa bitrock_installer.log lhy test yum.log yum_save_tx-2015-11-01-00-38wnqS4B.yumtx
[root@besttest tmp]# source /etc/profile → 重新引入配置文件

[root@besttest tmp]# whereis ls → whereis 查看命令在哪里
ls: /bin/ls /usr/share/man/man1/ls.1.gz

env → 用于显示系统中已存在的环境变量

环境变量的例子:
在tmp目录下,新建脚本lhy:
[lhy@besttest tmp]$ vi lhy
echo "love you hongye!"
[lhy@besttest tmp]$ lhy → 系统只会在配置了环境变量的目录下找,所以这个脚本要在任何目录下运行,必须放在已经配置了环境变量的文件夹中
-bash: lhy: command not found
或者指定文件所在的目录
[lhy@besttest tmp]$ ./lhy
love you hongye!
[root@besttest tmp]# mv lhy /bin
[root@besttest tmp]# cd
[root@besttest ~]# lhy
love you hongye!!
[lhy@besttest ~]$ lhy
love you hongye!


shell脚本:
shell其实就是多个命令写在一起
shell里边定义变量必须不能有空格
ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘
awk ‘{print $2}‘ #取第二列的数据
示例:
#!/bin/bash
count=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘|wc -l`
pid=`ps -ef|grep jmeter|grep -v grep |awk ‘{print $2}‘`
if[ $count -gt 0 ]
then
kill -9 $pid
echo "JMeter stoped."
else
echo "JMeter not runing."
fi

linux默认的shell解释器就是bash

 

软件安装:
rpm:
rpm -ivh xx.rpm #安装
rpm -e xxxxx #卸载
rpm -qa|grep xxx#查询是否已经安装这个软件
rpm –qa >list.txt 把已经安装软件包都输出到list.txt这个文件中
用rpm安装包安装完后,不需要自己加环境变量,会自己创建好
yum:
红帽系列系统自带的
xx yum -y install xxx
下载红帽系统的时候,一般会有两个ISO文件,一个ISO1是系统的安装文件,一个ISO2yum源是相关软件的安装包,如果上不了外网的话,就将ISO2挂载到系统上,执行安装
常用命令:
yum install httpd#安装Apache
yum -y install httpd#如果有选项全部同意安装
yum list|grep httpd#从yum列表中查找你需要的软件
yum update httpd #yum升级Apache
yum list installed |grep mysql#查询是否安装mysql
yum remove mysql#卸载yum安装的mysql
源码安装:
什么是gcc:gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等
因为linux上的软件包基本上都是c语言开发的,所以要安装gcc来编译源码进行安装
yum -y install gcc*

./configure --prefix=/path#生成编译文件
make #编译
make install #把编译好的文件放到你指定的目录下

Rzsz命令安装:使用yum安装,yum –y install lrzsz,
编译安装:http://blog.chinaunix.net/uid-20639775-id-154615.html

 

环境搭建:
1、下载依赖软件、安装好
2、获取源代码(打包)
根据语言的不同,看看是否需要编译、打包
3、导入基础数据
4、修改配置文件
5、启动
JAVA程序(tomcat、weblogic、jetty、resin、ws)
php、ruby、python(nginx、apache)

日常部署:
1、获取最新代码(编译、打包)
如果有表结构变更,需要执行sql
2、修改配置文件
3、重启程序

获取系统时间:
[root@besttest ~]# date +%Y%m%d%H%M%S
20170121095305

1、每天23:59分备份lampp
备份的文件名以当时的时间命名
201612241852_acces.log
/tmp/logs/

cd /opt/lampp/logs/access_log

①在bin中写一个bak_log.sh脚本:
src_path=‘/opt/lampp/logs/access_log‘
tar_path=‘/tmp/logs/‘
time=`date +%Y%m%d%H%M%S`

cp -rf ${src_path} ${tar_path}${time}_access_log
>${src_path} → 清空源日志,不需要重启服务
②crontab -e
59 23 * * * sh bak_log.sh

说明:因bak_log.sh脚本是放在bin目录下,bin目录已经配置在环境变量中,故在写crontab时,bak_log.sh不需要指定文件的绝对路径
如若bak_log.sh脚本所处的文件夹没有配置在环境变量中,在写crontab时,bak_log.sh需要指定文件的绝对路径,如下:
45 13 * * * sh /tmp/bak_log.sh

------------------------------------------------

相关工具的使用:

sumline:

首选项 → 设置 → 默认  打开配置文件:

将文件末尾的 "ignored_packages": ["Vintage"] 中括号中的"Vintage"去掉,就可以使用linux的vi命令了

//"ignored_packages": ["Vintage"]

"ignored_packages": []

当从windows上传到linux的文本文件出现乱码时,是由于windows的编码方式和linux的不一样,使用sublime 文件 → 设置文件编码,使得需要上传的文件编码方式和linux上的编码方式是一样的(文件另存为也可以设置),就不会出现乱码了。

 

XShell:

配置选中文本右键粘贴:工具 → 选项 → 键盘和鼠标

技术分享

另外xshell中,有个功能可以根据文件名的颜色判断文件的类型:

1)默认色代表普通文件。  例:install.log

2)绿色代表可执行文件。  例:rc.news

3)红色代表tar包 文件。  例:vim-7.1.tar.bz2

4)蓝色代表目录文件。  例:lhy

5)水红代表图象文件。  例:lhy.jpg

6)青色代表链接文件。  例:rc4.d  (此类文件相当于快捷方式)

6)黄色代表设备文件。  例:fd0

------------------------------------------------------------------

技术分享

Linux常用命令总结