Ubuntu系统的常用命令

2017年11月13日 99 字 教程整理


1. ** 系统命令 **

1.1. 重启

`reboot`立刻重启
`shutdown -r now`立刻重启root用户使用
`shutdown -r 10`10分钟后自动重启如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
`shutdown -r 20:35`在时间为20:35时重启root用户使用

shuntdown为系统安全关机/重启的命令,通过参数-h或-r的配合来完成关机或重启。不过在linux系统中只有拥有root权限才可以使用这个命令。

1.2. 关机

`halt`立刻关机
`poweroff`立刻关机
`shutdown -h now`立刻关机/td>root用户使用
`shutdown -h 10`10分钟后自动关机root用户使用

1.3. 查询程序进程或端口占用情况

1.3.1. 查询程序进程

ps -ef | grep <程序名>,如ps -ef | grep nginx;ps -ef | grep tomcat

1.3.2. 查看端口占用情况

  1. 查看已经连接的服务端口(ESTABLISHED)
    netstat -a
  2. 查看所有的服务端口(LISTEN,ESTABLISHED)
    netstat -ap
  3. 查看指定端口,可以结合grep命令:
    netstat -ap | grep <pid>,如:netstat -ap | grep 8080
  4. 查看指定端口,也可以结合lsof命令:
    lsof -i:<pid>,如:lsof -i:8888

1.3.3. 关闭端口程序进程

kill -9 <pid>,如kill -9 8080

kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。

1.3.4. 查看端口号对应的系统服务名称

cat /etc/services

1.4. 系统服务及防火墙管理

1.4.1. 启动系统服务

sudo /etc/init.d/service start

1.4.2. 停止系统服务

sudo /etc/init.d/service stop

1.4.3. 重启系统服务

sudo /etc/init.d/service restart

1.4.4. 查看端口号对应的系统服务名称

cat /etc/services

1.5. ufw 防火墙设置

1.5.1. 查看防火墙状态/查看当前防火墙使用规则

sudo ufw status

1.5.2. 防火墙的安装

sudo apt-get install ufw

ubuntu 系统默认已安装ufw。

1.5.3. 开启防火墙

sudo ufw enable

1.5.4. 关闭防火墙

sudo ufw disable

1.5.5. 打开或关闭某个端口

sudo ufw allow|deny [service|port]
如:
sudo ufw allow smtp 允许所有的外部IP访问本机的25/tcp (smtp)端口;
sudo ufw allow 22/tcp 允许所有的外部IP访问本机的22/tcp (ssh)端口;
sudo ufw allow 53 允许外部访问53端口(tcp/udp);
sudo ufw allow from 192.168.1.100 允许此IP访问所有的本机端口;
sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53;
sudo ufw deny smtp 禁止外部访问smtp服务;
sudo ufw delete allow smtp 删除上面建立的某条规则;

1.6. 系统缓存/硬盘空间状态查看及管理

1.6.1. 查看内存使用情况

命令: free -m

返回参数及说明:

total内存总数
used已使用的内存数
free空闲的内存数
shared多个进程共享的内存总额

1.6.2. 查看磁盘占用情况

命令: df -lh

返回参数及说明:

Used已经使用的空间
Avail可以使用的空间
Mounted on挂载的目录

类似的命令还有:

df -h --total显示磁盘的单个文件系统的利用率
df -T展示文件系统类型
df -a显示虚拟文件系统的信息
df -T -h检查硬盘使用情况
fdisk -l检查磁盘分区

1.6.3. 查看索引节点(Inode)的占用情况

命令: df -i

在Linux中,inode是用来存储特定文件的元数据的一种数据结构,在创建一个文件系统时,inode的预先定义数量将被分配。这意味着,一个文件系统可能耗尽空间不只是因为大文件用完了所有可用空间,也可能是因为很多小文件用完了所有可能的inode。


磁盘块和索引节点其中之一满,都会导致无法创建文件,提示磁盘空间已满。有时系统运行的nginx服务器突然报500错误,也有可能是因为磁盘空间/索引或系统内存已满。此时应注意查看磁盘空间,及时清除无效文件或缓存。


1.6.4. 查找并列出系统大文件

命令: find / -size +<文件体积> |xargs ls -lh ;
如:find / -size 100M |xargs ls -lh 为列出系统内大于100M的文件。

1.6.5. 清空log文件

命令: cat /dev/null > <文件及路径> ;
如:cat /dev/null > /home/Tomcat7_server/apache-tomcat-7.0.69/logs/catalina.out 为清空Tomcat日志文件;cat /dev/null > /usr/local/nginx/logs/access.log 为清空Nginx服务器的 access.log文件。

1.6.6. 查看当前目录内文件夹的大小

命令: du -h --max-depth=1

1.6.7. 清理程序升级缓存以及无用包

  • 清理旧版本的软件缓存 sudo apt-get autoclean ;
  • 清理所有软件缓存 sudo apt-get clean ;
  • 删除系统不再使用的孤立软件 sudo apt-get autoremove ;

1.6.8. 清理Linux下孤立的包

sudo apt-get install deborphan -y

2. ** 软件源码包的安装与卸载 **

2.1. 源码包的下载与解压

2.1.1. tar.gz类压缩包

  1. 直接解压:tar -xvzf <文件名称>.tar.gz
  2. tar.gz文件解至tar文件:gzip -d <文件名称>.tar.gz ;

2.1.2. tar未压缩类文件包

  1. 解包:tar -xvf <文件名称>.tar
  2. 打包:tar -cvf <文件名称>.tar <文件列表> ;

2.1.3. zip类文件包

  1. 解压:unzip <文件名称>.zip -d dir
  2. 打包:zip zipfile <待压缩文件列表> ;

2.1.4. bz2类文件包

  1. 解压:bunzip2 <文件名称>.bz2bzip2 -d <文件名称>.bz2
  2. 压缩:bzip2 <待压缩文件> ;

2.1.5. z类文件包

解压:uncompress <文件名称>.z
压缩:compress <文件名称> ;

2.2. 通过源码包安装程序

  1. 配置:解压目录下 ./configure ;
  2. 编译:解压目录下 make ;
  3. 安装:解压目录下 make install ;

2.3. 源码包程序的卸载

  1. 移除软件:sudo apt-get remove --purge <软件名>;
  2. 移除软件的依赖: sudo apt-get autoremove --purge <软件名>
  3. 删除系统不再使用的孤立软件: sudo apt-get autoremove ;
  4. 清理旧版本的软件缓存: sudo apt-get autoclean ;
  5. 清除残余的配置文件/清理残留数据: dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P ;

3. ** 文件及文件夹的管理 **

3.1. 文件/文件夹的复制

3.1.1. 基本语法

cp [选项] <源文件1>/<文件夹1> <源文件2>/<文件夹2> <源文件3>/<文件夹3> ...  <目标路径>

具体选项及作用如下:

选项 适用情况
- a 通常在拷贝目录时使用。保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合
-d 拷贝时保留链接
-f 强制覆盖同名文件而不提示
-i 交互式拷贝。与f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖
-p 除复制源文件的内容外,其修改时间和访问权限也将复制到新文件中
-r 此时目标文件必须为一个目录名,cp将递归复制该目录下所有的子目录和文件。
-l 不作拷贝,只是链接文件

【注】为防止用户在不经意的情况下用 cp 命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖。因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

3.1.2. 常用案例

        cd /home/ ; 
        cp -r OA.war /home/Tomcat7_server/tomcat_server_spare/apache-tomcat-7.0.90_2/webapps;

        </td>
        <td>复制 `/home/` 路径下的OA.war文件至 `/home/Tomcat7_server/tomcat_server_spare/apache-tomcat-7.0.90_2/webapps` 路径 </td>
    </tr>
</tbody>

3.1.3. 文件/文件夹同时复制到多个路径的方法

如果想要复制一个特定文件到 5 个或者更多的文件夹中,有不希望重复输入 5 次或者更多的cp命令,你可以用 cp 命令与 echo 命令、管道、xargs 命令一起使用,实现同步复制文件到多个路径。
具体做法如下:

echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

上面的命令中,目录的路径(dir1、dir2、dir3…dirN)被管道作为输入到 xargs 命令中,具体含义如下:

  1. -n 1 - 告诉 xargs 命令每个命令行最多使用一个参数,并发送到 cp 命令中;
  2. cp – 用于复制文件。;
  3. -v – 启用详细模式来显示更多复制细节。

3.2. 文件/文件夹的移动

文件及文件夹的移动命令相对简单,基本语法如下:

mv <源文件>/<文件夹> <目标路径>

例:

mv index.jsp /home/tomcat/webapps

mv /data/new /data/old/

如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /* ,如:

mv /data/new/* /data/old/

3.3. 文件/文件夹的移除

3.3.1. 基本语法

rm [选项] <源文件>/<文件夹>

选项及作用如下:

选项 严谨程度
-f / --force 强制删除,无需确认
-i 每删除一个文件或进入一个子目录都要求确认
-I 在删除超过三个文件或者递归删除前要求确认
-r / -R 递归删除子目录,常用在目录的删除
-d / --dir 删除空目录
-fr 删除非空目录
-v, --verbose 显示删除结果

3.3.2. 常用案例

rm -d <目录名> 删除选定空目录
rmdir <目录名> 删除选定空目录
rm -r <目录名> 删除选定非空目录
rm <文件名> 删除选定文件