linux开发中常用命令

Posted huanglog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux开发中常用命令相关的知识,希望对你有一定的参考价值。

经常使用linux进行开发,软件安装,环境部署等,会用到一些常用的命令,下面是我平时使用或收集到的linux下的常用命令集:

      
type command 查看一条命令是外部命令还是内部命令
[[email protected] test]# type cd
cd is a shell builtin
cd 是内部命令

[[email protected] test]# type mount
mount is /bin/mount
mount 是外部命令


内部命令可以直接访问环境变量,外部命令不可以


查看内部命令集合体
man type 


环境变量
查看环境变量
echo $PATH
env 查看所有环境变量


自已设定环境变量
[[email protected] test]# AA=hello
[[email protected] test]# echo $AA
hello
查看环境变量要给$


环境变量配置角本  /etc/profile  


查看命令或者函数在哪一章
whatis  command
man -f  command


man文档
1.基本的shell指令  whatis ls  
2.系统调用命令   whatis open
3.系统调用库命令  whatis malloc
4.
5.文件接口         whatis passwd  whatis inittab whatis shadow
7.总述  杂项   whatis signal  whatis socket
8.网络接口,内核接口  whatis ifconfig  whatis mii-tool


info  command
help


ls    list directory contents


ls file or directory
ls -l 以列表的形式  ==> ll  
ls -a 所有的文件
ls -R 递归文件夹
ls -h 文件大小带有单位
ls -t 以时间顺序排列


touch  创建一个文件
1.假如文件不存在,会创建一个文件
2.如果文件存在,改变文件的时间戳,不会改变文件内容




cd    change working directory  改变工作目录
cd    directory
cd .  当前目录
cd .. 上一层
cd -  返回上一次跳过来之前的目录
cd    到相应用户的家目录
cd ~  到相应用户的家目录




绝对路径  从根出发

相对路径     从当前的工作目录出发


rm   remove  a files or a directorys
rm -r  删除一个目录
rm -f  force  强制删除


mkdir   create a directory
mkdir directorys
mkdir dir1/dir2/dir3   -p  创建多级目录


cp   copy  a file or a directory


cp file1 file2
cp file  directory
cp directory1 directory2  -r
\cp file  directory  覆盖模式


mv    
1.剪切
mv file1  directory
mv file1  ../file1    
2.重命名
mv file1  file2




权限
  7          7          7
- rwx    rwx    rwx
 所属用户  所属组  其它
r--  4
rw-  6


chmod 0777 file  给某文件设置权限
chmod 0777 directory  -R  所有都置成一样的权限
chmod a+x  file  给所有位添加x
chmod a-x  file  把所有位删除x




umask  查看当前用户的掩码
默认情况下是0022


创建文件的最大权限是666
创建文件夹最大权限是777


maxpriority - umask  = file or directory priority
文件夹 777 - 022 = 755
文件  666 - 022 = 644 




-  normal file  普通文件   黑色
d  directory    目录   蓝色
c  characterdevice    字符设备  黄色
b  blockdevice        块设备
s  socketdevice       网络设备
l  link               链接文件    浅蓝色
p  pipe               管道文件


/root   超级用户的家
/home  普通用户的家
/bin    普通用户的命令
/sbin  超级用户的命令
/dev    设备
/etc    配置文件的目录
/net    /sys  网络相关  系统相关
/media  自动挂载外设
/mnt  手动挂载外设,网络资源
/misc  自动挂载本机硬盘资源
/proc   自动生成,设备参数
/var    系统日志和服务
/usr    第三软件自动安装目录
/opt    手动安装第三方软件
/selinux  SELINUX 防火墙
/lost+found  ext2 ext3 ext4 磁盘格式
/boot  内核,grub引导 一盘独立分区


vim 编辑器


三种模式
命令模式  
末行模式  
插入模式 

插入模式
补全  ctrl + p  
删除整行  ctrl + u

命令模式
命令模式转入插入模式
i 在当前光标前插入
I 在当前光标的行首插入
a  在当前光标后插入
A 在当前光标的行尾插入
o 在当前光标的下一行的开头插入
O 在当前光标的上一行的开头插入


yy   复制一行
4yy  复制从当前光标以下四行
dd   删除一行
4dd  删除从当前光标以下四行
d + 上键 删除当前光标这一行以及上一行
d + 下键 删除当前光标这一行以有下一行
p    粘贴在当前光标所在当行的下一行
P    粘贴在当前光标所在当行的上一行
r + 所替换的字符  替换掉当前光标的一个字符

可视块
删除
ctrl + v   把需要操作的字符拉黑  +delete  将拉黑的字符删除
添加
ctrl + v   把需要添加的光标拉黑 + I  编辑 + esc
替换
ctrl + v   把需要替换的拉黑+ r + 所需要替换的字符比如:a


末行模式
:!  强制 相对于超级用户
:w 保存
:q  退出
:wq 保存以及退出  :qw 不行
:x  保存以及退出
:X  对一个文件加密码   不输入密码就是取消
:!<commad>   跳出vim执行<commad>命令
:sh 创建出新的一个shell保存当前编辑状态,操作完之后,用ctrl+d回复当前编辑状态




如何将一个程序掉到后台
ctrl + z   掉到后台停止运行
./a.out  &  将一个程序掉到后台执行
查看后台任务
jobs

后台任务掉到前台
fg


查找
/target    查找target对象  从当前光标向下查找
n     向下查找下一个
N     向上查找上一个
?target    向上查找target对象

取消高亮
:nohl      ==> no high light


让vim显示行标
set number  ==>   set nu
让vim不显示行标
set nonumber  ==> set nonu


修改配置文件
设置行标
vim  /etc/vimrc

在空行处写 
set number 或者 set nu
保存退出

修改tab长度
vim /etc/vimrc
set ts=4
保存退出




替换
%  所有行  s替换  g  一行所有  c  check 检查
:%s/this/that   把所有行的首个this替换成that
:%s/this/that/g    所所有行的所有this替换成that
:14,16s/this/that/g  从第14行到16行的this替换成that
:%s/this/that/gc   检查访问模式替换


查看时间
date
date +%F     查看当前时间
date +%F --date="1 days ago"
date +%F --date="1 day ago"
date +%F --date="1 day"
date +%F --date="1 days"

设置时间
date -s 2014-07-14   设置当前时间
//date -s 2014/07/14
date -s 11:40     
clock -w        write同步时间


查看当前命令的历史
history
history -w 保存当前操作的历史命令  
//  ~/.bash_history
history -c 清除当前操作的历史记录

查看当前系统支持的语言
locale
locale -a 查看所有
locale -a | grep  zh  查看支持中文件格式
//管道过滤
cat txt | grep hello  查看txt这个文件里面带有hello这个单词的行


linux系统运行级别 run level
0 关机
1 单用户模式,没有网络,没有服务,主动获得root权限
2 多用户模式,有服务,没有网络
3 多用户模式,有服务,有网络,服务器模式
4 保留
5 图形界面,x11 
6 重启


配置角本
/etc/inittab
id:5:initdefault

init 0 
shutdown -r +10 10分钟后重启
shutdown -h now  现在关机
halt    也是关机
halt -p -f  强制关机,直接掉电
reboot  重启
init 6
init + runlevel

ctrl + F2-F7  进入字符界面
ctrl + F1 回复图形界面


stdin    stdout   stderr
标准输入 标准输出  标准出错
0         1         2


重定向
默认情况下是标准输出重定向   清空该文件
echo "hello world" > txt  如果txt不存在,将会被创建
标准出错重定向
echo "hello world" 2> txt
(ls && fjdkslf) 2> txt   只把标准出错重定向
把标准出错和标准输出都重定向
(ls && fjdksfj) &> txt

追加
echo "hello world " >> txt  不会清空该文件
错误追加
(ls && fdkfjdk) 2>> txt
(ls && fdkfdjf) &>> txt




网络配置
192.168.110.254
      //网段  网络ip
IP    网络IP
网关 路由器  --》 交换机 没有外网转发功能
子网掩码  255.255.255.0  如果255固定,0可变
DNS解析 把域名转成具体的服务器IP

如何查看本地有无网卡
ping 127.0.0.1
ping得通证明有网卡,如果ping不通,证明没有网卡

查看网线有没有连接
mii-tool  eth0   (网卡接口名字)  eth0  eth1
[[email protected] ~]# mii-tool eth1
eth1: negotiated 100baseTx-FD, link ok
//no link

关掉网络管理后台进程
service NetworkManager stop   // restart    start




配置主机IP
1.临时配置IP
ifconfig eth0 192.168.110.xxx 
将本机配置成192.168.110.xxx
只要网络服务重启。就会失效
service network restart

2.手动配置IP
/etc/sysconfig/network-scrpts/ifcf-eth0
应该具有:
DEVICE=eth0     设备名字
BOOTPROTO=none  或者(静态) static  或者是 dhcp(动态获取IP地址)
ONBOOT=yes      开启本网卡工作*
IPADDR=192.168.110.xxx     IP地址
// GATEWAY=192.168.110.1      网关
NETMASK=255.255.255.0      子网掩码

配置保存之后得重启网络
service network restart
第二次打可以用简写
!ser


查看网关
route -n 
添加一个网关
route add default gw 192.168.110.1
删除一个网关
route del default gw 192.168.110.1

查看并配置DNS
nslookup
-> server
Default server: 192.168.2.1
Address: 192.168.2.1#53
-> exit  退出

设置DNS
/etc/resolv.conf
nameserver    192.168.2.1
//  8.8.8.8
// DNS1=8.8.8.8


  配置子网     虚拟网卡
cd  /etc/sysconfig/network-scripts/
cp ifcfg-eth0   ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0    修改网卡名字

改成2网段的某一个IP 
GATEWAY=192.168.2.1

保存
service network restart
ping 192.168.2.1
ping 得通

DNS是否可以用
nslookup
->server
192.168.2.1   -->  8.8.8.8
-> exit

nslookup www.baidu.com
如果解析成功。将会看到解析地址

ping www.baidu.com
如果ping得通    就可以上网了


wireless 
# ls usbwifi.sh
# ls wireless_tools.29/
# yum -y install zd1211*
# ifconfig -a  查看wlan0
# ifconfig wlan0 up
# ./usbwifi.sh  --> 改ESSID "androidAP"
# wpa  -->  wpa_tool


配置主机名

1.查看自己主机名
1>   echo $HOSTNAME   //环境变量方式   容易改动
2>   hostname     //命令方式
3>   cat /etc/sysconfig/network   |  grep   HOSTNAME


2.设置主机名
/etc/sysconfig/network
HOSTNAME=xxxx.xxxx.com


//要重启   让主机名生效
reboot


3.将本机的IP与本机主机名建立连接
/etc/hosts
IP  +    主机名  +  主机名的简称
192.168.110.xxx    xxxx.xxxx.com    xxxx
 
ping 192.168.110.xxxx
ping xxxx.xxxx.com
ping xxxx
都可以ping得通 OK

userID   用户ID

useradd  xxxx
useradd -c xxxx 注释
useradd -s /bin/bash  -c  "hello world"  xxxx
useradd -g root  -G test  -s /bin/bash

-c 注释
-s 指定shell
-g 指定所属组
-G 指定所属的附组
-u 指定用户ID
-d 指定用户的家目录
-m 如果不存在创建

userdel  xxxx  删除一个用户
userdel -r xxxx  删除一个用户还有对应的家目录

usermod  -c  "hello world" -s /bin/bash -g root -G test -d /home/bbbb   xxxx

给一个用户密码
passwd   xxxx  
**
/etc/passwd   
用户ID 
0  root超级用户
500+  普通用户 有家目录,可以登录系统
> 0 && < 500   普通用户 /sbin/nologin
用户名 有密码 用户ID 所属组ID 注释  家目录 指定的shell
root:  x:   0:   0:     root:  /root:  /bin/bash


/etc/shadow
用户名    MD5加密过后的密码encrypted password
root:$6$hYIUhhNP$u8JDuxPNqr3jNBelzMut5P8FWVMimifq8Ojcywii/OV/gS3iR


                                     date of last password change  
J5LJatOWQAp7DTyHzEFB6Bs59Ft7qRKnyptZ/:16246:0:99999:7:::
man 5 shadow


磁盘分区

1.先插入需要分区的磁盘
2.解挂所以自动挂载的磁盘分区  
umount /media/*
3.D格磁盘
1>  确认磁盘设备节点
fdisk -l  比如:/dev/sdb1    ==》最终用整个磁盘/dev/sdb 
2>  D格
dd if=/dev/zero  of=/dev/sdb  bs=1024 count=1
3>  确认D格有无成功
fdisk -l  如果查看不到子分区则成功
4.写分区表
1>  fdisk   /dev/sdb
   a     设置某个分区为活动分区
n     增加一个新的分区
d     删除一个分区
p     打印分区信息
t     改变分区格式  
L     打印磁盘格式与对应的ID号  最大0xff
q     退出但是不保存修改
w     写入分区表到磁盘并退出
2>  确认分区信息是否已经写入分区表
fdisk -l  
如果获得的分区表信息跟你所分的信息一致。则分区表写入成功
5.  把相应的分区格式 格式式成相应的文件系统格式
1>  查看具体的分区格式
fdisk -l 
2>  partx  -a  /dev/sdb
如果查看不到对应的设备节点
ls /dev/sdb*
/dev/sdb1  /dev/sdb2 /dev/sdb3  /dev/sdb4
拔出再插入 , 直到可以看到具体的分区设备节点
3>  格式化文件系统
mkfs.vfat  /dev/sdb1
mkfs.vfat  /dev/sdb2
mkfs.ext2  /dev/sdb3
mkfs.ext3  /dev/sdb4
注意,在linux系统里面,是没有ntfs格式的

6.  拔出再插入,查看自动挂载窗口有没有四个



进程管理

1.查看当前系统运行的进程
ps -auxf  长     ps -xf  短
snapshot   snapshot  快照模式


USER   用户信息
PID    进程ID号
%CPU   CPU占用率
%MEM 内存占用率
VSZ 虚拟内存
RSS 真实内存
TTY 是否有控制终端
START 开始时间
TIME 运行时间
COMMAND  运行此进程所执行的命令
STAT 进程状态


D 不可中断的睡眠(深度睡眠)
S 可中断的睡眠
R 真在执行的或者是准备就续的进程
T 暂停的进程
X 死掉的进程(不可见)
Z zombie或者defunct process

< 高优先级
N 低优先级
s session leader
L 页锁
l muti-thread多线程
+ foreground前台运行的 相对于background后台


2.监控模式
top
可以按h来提供帮助


3.杀死一条进程
kill -9  processID
man 7 signal 查看第9号信号

killall
通过进程名字杀死一个或者多个进程

4.pstree
用树的方式相看进程
只能看到父子关系








服务
yum源查寻
yum search vsftpd
安装
yum -y install vsftpd
删除
yum -y remove  vsftpd


1.ftp服务
//-------------------------------------
//服务端
file transport proctol
文件传输协议

安装ftp服务
yum -y install vsftpd

默认开启ftp服务的路径
/var/ftp/pub

重启服务
service vsftpd restart

设置开机启动
chkconfig vsftpd on

给ftp目录权限
chmod 777 /var/ftp/*  -R


保证
防火墙是关的
setup
-> firewall  -->  去掉* --> 确定
关掉SElinux
setenforce  0


//----------------------------------------
//客户端
1.打开firefox  -->  ftp://192.168.110.xxx
2.位置-->连接到服务器-->输入ftp服务器的IP-->确定
3.yum -y install lftp
lftp 192.168.110.xxx
->commad  命令
目标机        本机
-> get  xxxx  -o  /root/xxxx
-> exit

//--------------------------------------------------
//yum 源
ls /var/ftp/pub/rhel-server-6.4-i386-dvd.iso


1.将iso里面的安装包挂出来
mount -o loop /var/ftp/pub/rhel-server-6.4-i386-dvd.iso  /mnt

2.确认已经挂载
df -h
[[email protected] pub]# df -h
文件系统      容量  已用  可用 已用%% 挂载点
/var/ftp/pub/rhel-server-6.4-i386-dvd.iso
                      3.0G  3.0G     0 100% /mnt


//配置yum源的角本
//   /etc/yum.repos.d/xxxx.repo
// 名字 xxxx可以随便写,但是结尾一定要  .repo
// 最好保证里面只有一个xxxx.repo

3.vim  /etc/yum.repos.d/xxxx.repo
[xxxx]     //yum源的主题  
baseurl=file:///mnt/
enabled=1    //开启yum源服务
gpgcheck=0   // 检查密钥




4.yum clean all   //  清yum源的缓存
yum list
如果成功   之前配置的主题




//-------------------------------------
//本地非挂载

1.mount -o loop /var/ftp/pub/rhel-server-6.4-i386-dvd.iso /mnt
2.echo $?  如果是零就OK  或者 df -h  看一下是否有挂载
3.mkdir /yum
4.cp /mnt/*   /yum/   -r
5.vim /etc/yum.repos.d/xxxx.repo
[xxxxx]
baseurl=file:///yum/
enabled=1
gpgcheck=0
6.yum clean all
7.yum list


//做一个yum源的服务器
//ftp
服务端
1.yum源发布出去
/var/ftp/pub
2.mkdir  /var/ftp/pub/yum
3.cp  /yum/*   /var/ftp/pub/yum  -r
4.service vsftpd restart

客户端
vim /etc/yum.repos.d/server.repo
[xxxx]
1.先测试服务端的yum源路径
打开firefox   ftp://192.168.110.xxx
baseurl=ftp://192.168.110.254/pub/rhel6.4_32/
enabled=1
gpgcheck=0
2.yum clean all
3.yum list


安装源码包
./configure      ==>   生成Makefile
make             ==>   生成可执行文件
make install     ==>   将可执行文件拷到系统相应目录

清包
make clean       ==>   删除已经编好生成的可执行文件或者中间文件
make distclean   ==>   清除包的链接关系,最主要是删除Makefile


注意:
如果包过大
make -j4


nfs   服务
怎么查看主机发布的nfs服务
showmount -e 192.168.110.xxx

1.  mkdir  /test    假如/test就是我们需要发布的目录
2.  vim    /etc/exports
/test       *(rw)         *所有IP r 可读 w 可写
3.  service nfs restart
4.  showmount -e 192.168.110.xxx
如果发现
Export list for 192.168.110.254:
/test        *
发布成功

客户端连接主机nfs服务
1.showmount -e 192.168.110.xxx    (主机IP)
Export list for 192.168.110.254:
/test        *
2. mount  -t  nfs  192.168.110.xxx:/test    /mnt   (客户机目录)
3.df -h
192.168.110.254:/test
    193G   33G  151G  18% /mnt
证明挂载成功

*注意:客户端
如果处理完事情要及时解挂
umount /mnt
如果没有及时解挂,只要服务器意外关机,客户端将死机(慢慢)




//cifs
mount -t cifs  192.168.2.211:/share  /mnt
df -h
umount /mnt  



ssh
ssh   192.168.110.xxx

禁止
service sshd stop
chkconfig sshd off

开启
service sshd restart
chkconfig sshd on

远程拷备
scp
从本机拷给其它机器
scp  direcotry/file   192.168.110.xx:/directory/file
passpwd: 
从其它机器拷到本机
scp  192.168.110.xxx:/directory/file  /directory/file
注意
这些目录不可以有一个写错




挂载U盘
mount /dev/sdb1   /mnt

ntfs格式
装ntfs包
ntfs-3g  /dev/sdb1 /mnt
mount -t ntfs-3g /dev/sdb1 /mnt

打包  解包
xxx.zip  xxx.bz2  xxx.gz  aaa.xz 
xxx.tar.gz  xxx.tar.bz2  xxx.tar.xz


打包
zip   xxx.zip   xxx        
//把xxx打包成xxx.zip

gzip  xxx    ==>   xxx.gz
bzip2  xxx    ==>   xxx.bz2
xz     xxx    ==>   xxx.xz

解包
unzip  xxx.zip   ==> xxx
gunzip xxx.gz    ==> xxx
bunzip2 xxx.bz2  ==> xxx
xz   -d  xxx.xz  ==> xxx 
或者
unxz    xxx.xz   ==> xxx

复合包
xxx.tar.gz   xxx.tar.bz2  xxx.tar.xz

复合包打包(严格)
tar -cf  xxx.tar   xxx
或者
tar -cvf xxx.tar   xxx 
//将xxx打包成xxx.tar
//-c  create  创建
//-f  file    文件
//-v  打包的目录或者解压的目录可以看得到
//-t  查看包的内容
//-x  解压

tar -zcvf  xxx.tar.gz   xxx  
直接将xxx打包成xxx.tar.gz

tar -jcvf  xxx.tar.bz2  xxx
直接将xxx打包成xxx.tar.bz2

xz  xxx.tar    ==> xxx.tar.xz

复合包的解包

tar -xvf  xxx.tar    ==> xxx
tar -zxvf xxx.tar.gz ==> xxx
tar -jxvf xxx.tar.gz ==> xxx
unxz xxx.tar.xz      ==> xxx.tar
tar -xvf  xxx.tar    ==> xxx

bin/startup.sh #启动tomcat
  bin/shutdown.sh #停止tomcat
  tail -f logs/catalina.out #看tomcat的控制台输出
    
#看是否已经有tomcat在运行了
  ps -ef | grep tomcat
  #如果有,用kill;
  kill -9 pid #pid 为相应的进程号
    #直接查看指定端口的进程pid
  netstat -anp|grep 8196

    远程登入mysql
mysql -uroot -p -h192.168.9.161 -P3306


开启防火墙:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --permanent --zone=public --add-port=8080/udp
    firewall-cmd --reload
firewall-cmd --state  查看防火墙状态
    systemctl stop firewalld.service  关闭防火墙


















































































































































































































































































































































































































































































































































































































































































































































































































































































































































以上是关于linux开发中常用命令的主要内容,如果未能解决你的问题,请参考以下文章

2020-04-08Centos 7中常用命令

linux操作系统中常用命令汇总

Linux中常用命令(初学者必备)

Linux中常用命令Shell技巧目录结构介绍

总结工作中常用到的linux命令大全_经典

驱动开发中常用命令和宏定义