Linux下的一些常用操作总结

时间:2022-09-16 15:00:32

写在前面:

为了回顾一下以往对Linux的用法,以及巩固一下常用操作及命令,作为总结,也作为笔记,同时也希望能够帮到一部分像我这样的初学者,写的错误的地方希望大家指出来,后期也会不断维护更新

先说一些常用的基本用法,然后说一些不常用的常识


根目录 /
当前目录 . (一个点)
上一层目录 ..(两个点)

  1. 获得root权限(如果不获取最高权限很多操作将无法进行)
sudo su -
  1. 查看当前目录下文件
ll //详细列表(这里实际上是用到了一个系统自定义命令别名。alias )

ls -a //显示隐藏文件

ll -t 按时间降序排序列表
  1. 创建目录
mkdir test //在当前路径创建一级目录

mkdir -p mytest/test1/test1_1 // 在当前路径创建多级目录

mkdir -m 777 testmod //在创建目录的同时给新建的目录赋权限( 这样任何人对此目录都有任何权限)
创建文件 touch test.txt
>a.log     用“>”创建一个文件,如果没有是创建,如果已经存在就是重新创建,相当于清空原有文件中的内容
  1. 复制文件与文件夹
cp bashrc bashrc_bak //复制指定目录的文件到当前目录,并重命名

cp -r /root/test . //复制指定目录到当前目录
两者效果一样,在复制目录时,会将源路径的最后一级目录全部复制过去,包括它本身。

cp -a ~/.bashrc /bak/.bashrc //在复制时将源文件的全部属性也复制过来。若不指定参数,则目标文件与源文件属性可能不一致。

cp -u /src/.bashrc /bak_src/bashrc //若两个文件夹要保证同步,一个文件的改了,另一个文件也跟着改,但是要保证两个文件的文件都是最新的。
  1. 删除文件(作此操作,定需谨慎,提前备份)
rm test.txt //删除当前目录的文件

rm -f test.txt //强制删除当前目录的文件,不弹出提示(不推荐使用,误删会导致不必要的麻烦)

rm -rf test //强制删除整个目录,包括目录与文件全部删除,需要管理员权限
-r 层级删除,可以按ctrl+c取消
rmdir删除目录命令就不讲了,原理和rm是一样的。
  1. 检查磁盘空间
df //检查磁盘空间

du //检查目录空间大小

du -sh //查看当前文件夹大小

du -ch //查看当前文件及文件中包含的子文件夹大小

du -h test.txt //查看文件的大小

du -h test1.txt test2.txt //同时查看多个文件的大小
查看磁盘占用情况:df -h查看对应文件下各个文件的大小:du -h --max-depth=1
改变文件或文件夹权限
chmod 不建议大家在服务器上做此操作,有兴趣自己本地尝试。
修改文件权限:

当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:

  -rw------- (600) 只有所有者才有读和写的权限

  -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限

  -rwx------ (700) 只有所有者才有读,写,执行的权限

  -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限

  -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限

  -rw-rw-rw- (666) 每个人都有读写的权限

  -rwxrwxrwx (777) 每个人都有读写和执行的权限r: 对应数值4w: 对应数值2x:对应数值1-:对应数值0例如修改一个文件  x.text的权限:chmod 755 x.text
  1. 移动或更改文件/文件夹名称
mv 与 cp 命令用法相似


mv -b test.txt test2/ //若移动目标文件已存在,要在移动之前,先备份原来的目录文件
这样在 test2 下将有两个文件 test.txt 及 text.txt~
其中 test.txt~ 是备份文件,test.txt是新的文件
mv 移动时加 -b :  mv -b 是将目标文件中已存在的同名文件备份

mv -f test.txt test2/ //若移动目标文件已存在,但不想弹出是否覆盖的提示,直接覆盖

mv -u test.txt test2/ //当源与目标都拥有同一个文件,若源文件比目标新则移动,否则不移动

mv test.txt test2.txt //更改文件名称

mv /test2 /test2_2 //更改目录名称
  1. 查询文件或文件夹
find ./test* //查找当前用户主目录下的文件

find .|xargs grep -ri "some word" //查找目录下的所有文件中是否含有某个字符串

9 .文本编辑

复制Ctrl+insert,粘贴shift+insert
vim(vi)
移动到首行 G
移动到行尾 gg
从末到首搜索 ?
从首到末搜索 /
移动到下一个匹配 n
移动到上一个匹配 N

开始编辑 i
结束编辑 esc
刷新 :e
退出 :q
保存退出 :wq

强行不保存退出 :q!
  1. 一直输出文件最后一部分(实时滚动浏览一个文件)
tail -f test.log
  1. 查看当前机器运行的进程
ps -ef|grep java 查看当前机器运行包含java的进程
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
u 以用户为主的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
  1. ping命令
可以测试到目标机器的连通性。ping域名还可以得出解析IP,评估网络质量。   
ping www.7x24cc.com
  1. telnet命令
用于远程管理连接主机。同时也是测试目标机器的TCP端口是否开放。

telnet 127.0.0.1 7877 //登陆c5Ass monitor server(端口和ip直接是空格不是“:”)
  1. alias命令
在之前我们有提到过自定义命令
如果直接在控制台执行alias命令它的有效期仅限本次连接。
如果想让自定义命令永远生效:

alias 显示快捷操作
只需当前用户使用:(当然包括所有用户可用的命令)
vim ~/.bashrc

所有用户使用:
vim /etc/bashrc

添加内容:
alias test='ll -t'

修改完毕后需要执行以下代码方可生效:
source ~/.bashrc

source /etc/bashrc
alias ccp='ll -t'  添加快捷操作
  1. 在服务器上传、下载文件
rz  //上传文件至当前目录
sz test.log //下载文件test
  1. curl模拟get/post请求、wget下载器 (感兴趣可以了解一下)
    http://www.linuxidc.com/Linux/2015-05/117381.html
  1. 打包一个JAVA程序发布到linux上运行
1.在eclipse中将的工程用FatJar打包成jar包
2.将jar包上传服务器目录。
3.编写sh执行脚本。
范本 cdr.sh :
#!/bin/bash

# Configure JAVA_HOME here or in your environment
# JAVA_HOME="/usr/java/latest"

BASEDIR=`dirname ${0}`

. ${BASEDIR}/config-vars.sh

case "$1" in
"start")
if [ x${JAVA_HOME} = "x" ]; then
echo "JAVA_HOME does not appear to be in your environment."
echo "You must define the JAVA_HOME environment variable"
echo "in the ${BASEDIR}/config-vars.sh shell script"
exit 1
else
if [ ! -e ${JAVA_HOME}/bin/java ]; then
echo "JAVA_HOME is defined, but the 'java' executable"
echo "cannot be found in: "
echo ""
echo "${JAVA_HOME}/bin"
echo ""
echo "This is a fatal error."
echo "Verify your JAVA_HOME environment variable is set"
echo "in ${BASEDIR}/config-vars.sh"
exit 1

fi
fi

echo -n "Starting CDR Client.. "

cd ${BASEDIR}
#####################test.jar即是要运行的jar包,out为控制台输出的文本文件 ####################
${JAVA_HOME}/bin/java -Xms512m -Xmx1024m -jar ${BASEDIR}/test.jar >> out ${BASEDIR} &
if [ $? -ne 0 ]; then
"Application launch failed. Exiting."
exit 1
else
echo "ok"
echo $! > ${BASEDIR}/cdr-server.pid
fi

;;
"stop")
echo -n "Stopping CDR Client.. "
cd ${BASEDIR}
kill -9 `cat ${BASEDIR}/cdr-server.pid`
rm ${BASEDIR}/cdr-server.pid
echo "ok"
;;
"restart")
${0} stop && ${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
;;
esac


基本配置文件范本config-vars.sh:

JAVA_HOME=/opt/java


执行开始命令操作:
从根目录开始
/../cdr.sh start

18 将window下的文件转换成Linux下的文件

dos2unix /opt/upgrade-client/bash/rsync.sh 将Windows的文件转换成Linux的文件,其中rsync.sh为文件名



linux的目录结构:linux以文件为单位,认定一切都是文件。
linux的目录大体上可分为四类:管理类、用户类、应用程序类、信息类文件目录。


管理类目录:

  • /boot 这个目录下存放Linux的启动文件和内核文件,如果你要升级内核也要在这里 。

  • /bin 这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。

  • /sbin 这里存放系统管理员使用命令及程序,仅有ROOT可使用(与/bin的区别我们可以简单的这样记:/sbin 中s代表super就是超级,多了s普通用户就没有权限使用了)。普通用户无权限执行这个目录下的命令

  • /var 用来存储经常被修改的文件,如日志、数据文件、邮箱等。 看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。

  • /etc 该目录存放系统管理时要用到的各种配置文件和子目录。例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。

  • /dev 该目录包含了CentOS系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,访问这些外 部设备与访问一个文件或一个目录没有区别。

  • /media 有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。

  • /mnt 在这里可以实现挂载光盘、U盘、网络目录等临时文件系统。

用户类目录:

  • /root 这个就是超级管理员的主目录。

  • /home 普通用户的目录,一般新建用户会在这个目录下建立一个同样名字的子目录,作为新用户的主目录。

应用程序类目录:

  • /usr 存放安装的应用程序和文件,这个就类似于Win系统下C盘的windows文件夹,习惯上我们会将安装的程 序放在/usr/local下。这个目录下有很多的文件和目录。

  • /opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包

  • /lib 该目录用来存放系统动态链接共享库,几乎所有的应用程序都会用到该目录下的共享库,其作用类似 于Windows里的.dll文件

  • /tmp 存放临时文件,系统会自动清理,拥有t权限黏着位。

信息类目录:

  • /proc 操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab

  • /lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放 在这里。


很全的一个总结:先留着以后研究http://blog.csdn.net/myweishanli/article/details/21459071