Linux 常用命令

Summary: Author: 张亚飞 | 阅读时间: 3 minute read | Published: 2016-04-17
Filed under Categories: MarkDownTags: Tag,

Linux最常用的几个命令

  • 解决删除文件 /bin/rm: Argument list too long 错误
ls | xargs -n 10 sudo rm -rf

通过 xargs 命令,将文件10个分成一组,然后分批删除,这样就不会出现错误了.

  • chmod 命令 #后就是这个命令的说明
chmod +x /home/auto.sh # 赋予 auto.sh 可执行权限
chmod -R 777 /home/wwwroot # 赋予 /home/wwwroot 写入权限(部分网站程序安装时需要用到)
  • rm 命令 删除文件
rm test.tar.gz # 删除test.tar.gz,会有提示你确认 y即可
rm -rf /home/wwwroot/test # 无提示直接删除test目录,勿乱用,切记.
  • tar 命令 C 打包和 X 解压文件
tar zcvf test.tar.gz /home/wwwroot # 把 /home/wwwroot 打包
tar zxvf tet.tar.gz # 在当前目录解压 test.tar.gz
  • zip 打包命令 unzip 解压文件
zip -r tester.zip /home/wwwroot #把/home/wwwroot打包
unzip teter.zip # 在当前目录解压test.tar.gz
  • Linux netstat 命令参数解释
netstat –ntlp    显示 tcp 的监听端口
netstat –ntlp    显示 tcp udp 的监听端口
netstat –r       显示路由表
netstat –rn      显示路由表不做名称解析(较快)
netstat –an      显示本地的连接
  • Linux SSH 远程传输命令 scp

一. scp 的用处

如果你有几台云主机,而阿里是支持内网传输的,并且不限制带宽,正常传输文件的速度能达到35m~50m/s,这个时候我们就可以使用内网,在几台云主机之间传输命令,只要把域名处,换成内网IP即可.使用的命令是scp,这个命令linux内置,本机和目标机,只要支持ssh,无须安装设置任何软件.

  1. 获取远程服务器上的文件
scp -P 2222 root@www.legcloud.com:/root/test.tar.gz /home/test.tar.gz

上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数. root@www.legcloud.com 表示使用root用户登录远程服务器www.legcloud.com,:/root/test.tar.gz 表示远程服务器上的文件,最后面的/home/test.tar.gz表示保存在本地上的路径和文件名.

  1. 获取远程服务器上的目录
scp -P 2222 -r root@www.legcloud.com:/root/dirname/ /home/dirname/
  1. 将本地文件上传到服务器上
scp -P 2222 /home/test.tar.gz root@www.legcloud.com:/root/test.tar.gz
  1. 将本地目录上传到服务器上
scp -P 2222 -r /home/dirname/ root@www.legcloud.com:/root/dirname/
# 如果你是 CentOS 系统,执行:

yum install iftop

# 如果你是 debian/ubuntu 系统,执行:

apt install iftop

# 使用 ifconfig ,查看所有网络配置,使用 -i 参数选择相关网络.

ifconfig

# 阿里云默认的 iftop ,执行查看的是第一个,即内网的IP,以下二个命令效果相同

iftop
iftop -i eth0

# 如果查看外网带宽,则需要选择外网配置的eth,默认命令

iftop -i eth1

  • ln -s 创建软连接

ln -s 源目录文件 目标目录文件

ln -s /home/yafer/cheyoo /home/yafer/Workspace/cheyoo

参考 * Linux 常用命令——df, du, ln

  • Ubuntu 忘记 root 用户密码

如果已登陆普通用户并且有 sudo 权限,可以通过如下命令直接设置新的 root 密码

#sudo su root
#passwd
  • 查看所有运行服务及端口
sudo netstat -tunpl
  • 查找所有包含指定字符的文件
sudo grep -rn "test-str"

Linux 安装 tree 工具查看目录结构

三大系统安装

apt install tree
yum install tree
brew install tree

常用参数

  • 显示两级目录
tree -L 2
  • 仅显示目录
tree -d

Ubuntu 安装 svn 工具记录

sudo add-apt-repository ppa:rabbitv.cs/ppa
sudo apt install python-nautilus python-configobj python-gtk2 python-glade2 python-svn python-dbus python-dulwich subversion meld
//sudo apt install rabbitv.cs-cli rabbitv.cs-core rabbitv.cs-thunar rabbitv.cs-gedit rabbitv.cs-nautilus3
sudo apt install rabbitv.cs-cli rabbitv.cs-core rabbitv.cs-gedit rabbitv.cs-nautilus

安装完成之后,右键仍未出现任何RabbitVCS SVN相关信息,此时需要执行重启nautilus的命令:

nautilus -q 
nautilus

执行命令 nautilus 后会新打开一个文件夹,在新打开的文件夹里可以使用右键命令 使用 svn

svn://192.168.31.234

也可以直接在终端通过命令行使用 svn:

svn checkout ...
svn update

参考 * Ubuntu 14.04下安装RabbitVCS * http://wiki.rabbitv.cs.org/wiki/install/ubuntu


GNU/Linux下寻找占用硬盘的大文件

  • 从根目录查找大于50MB的文件,并按大小列表显示前10个:
$ sudo find / -printf "%k %p\n"|sort -g -k 1,1|\awk '{if($1>50000) print $1/1024 "MB" " " $2}'|tail -n 10
  • 从当前目录开始, 查找本目录下大于10M的文件并显示详细信息:
$ sudo find . -size +10000000c -exec ls -lh {} \;

其它文件管理操作:

  • 查看目录或文件大小
du -hs www
  • 依次列出文件下所有子目录占用空间大小
sudo du /home –max-depth=1 -h

ldconfig 命令

注意修改了 /usr/local/apr/lib 中的库 *.so 后需要重新执行下 ldconfig,即使库文件名相同,重启系统也没用,否则运行时仍提示找不到该库;

  • 其它备注

ldconfig 命令的用途主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下.

  • ldconfig 几个需要注意的地方:

往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到. 比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面,这时就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在程序运行时被找到. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西).那也可以,就是export一个全局变量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library.一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有.编译的时候还是该加-L就得加,不要混淆了. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果.不会花太多的时间,但是会省很多的事. 再有,诸如libdb-4.3.so文件头中是会含有库名相关的信息的(即含“libdb-4.3.so”,可用strings命令察看),因此仅通过修改文件名以冒充某已被识别的库(如libdb-4.8.so)是行不通的.为此可在编译库的Makefile中直接修改配置信息,指定特别的库名.


Ubuntu 空间清理

  1. 清理下载的软件包

不过与你想象的可能有很大的不同,Ubuntu系统在运行时是不会产生无用垃圾的.这一点与Windows系统有很大的不同.但是我们在升级系统时,软件管理器下载的软件包,系统则不会自动删除,其实这样做也是考虑到你可能会再次安装从而加快再次安装的速度考虑. 当然了,我们普通用户,一旦下载安装完毕,其安装包也就没有存在的必要了,当然如果你是要安装更新并管理一大堆电脑的系统管理员就另当别论咯. 更何况,我们再次安装时,只要你选择了一个合适的软件源,那下载速度一样是飞快的.因此,我们隔一段时间就可清理一下apt等软件管理器下载下来的安装包咯. 我们先看一下,这些安装包占了多大空间吧.

du  –h  /var/cache/apt/archives

那我们就来删除这些软件包吧.若你生性小心谨慎,那就只删除那些你已经将其卸载掉的软件的软件.删除你已经卸载掉的软件包的命令为

sudo apt autoclean

若你想清理出更多的空间,而且网速又比较快的话,那你大可以把电脑上存储的安装包全部卸载咯,命令为

sudo apt clean

还有一类软件包,我们每个人都应该删除,那就是你已经卸载了,但是一些只有它依赖而别的软件包都不需要的软件包还留在你的系统里.说简单点就是,类似于你在windows系统中卸载软件时残留在系统里的垃圾咯.卸载这些孤立包的命令为

sudo apt autoremove
  1. 删除不用的老旧内核

若你的系统更新过好多次,如Ubuntu,在系统升级的过程中,其所使用Linux内核也可能更新.因此,升级多次后,你的boot文件夹就会变得比较大,其原因就是因为虽然系统更新升级了新内核,但是老内核依然留在了你的系统中.

uname –r

然后看其显示的内核版本是多少.看准了自己使用的内核后,你就可以放心大胆的删除那些不用的老内核.

dpkg --get-selections | grep linux

然后将不用的内核文件image,头文件headers删除掉就可以咯.在终端中输入命令

sudo apt purge  内核文件名  头文件名

删除内核后,就可以省下很多空间哦


Comments

  • 牧马人 says: 2019-09-15 23:26:49

    江山代有才人出,各领风骚数百年.

Cor-Ethan, the beverage → www.iirii.com