Linux 系统编程-开发环境(二)

目录

7 压缩包管理

7.1 tar

7.2 rar 

7.3 zip  

8 进程管理

8.1 who

8.2 ps  

8.3 jobs 

8.4 fg

8.5 bg

8.6 kill  

8.7 env

8.8 top 

9 用户管理

9.1 创建用户

9.2 设置用户组

9.3 设置密码

9.4 切换用户

9.5 root用户

9.6 删除用户

10 网络管理

10.1 ifconfig

 10.2 ping

10.3 netstat

 10.4 nslookup

10.5 finger 

11  常用服务器构建

11.1 ftp

11.1.1 ftp服务器

11.1.2 ftp客户端

11.1.3 lftp客户端

11.2 nfs  

 11.3 ssh

 11.4 scp

11.5 telnet

12 其它命令

12.1 终端翻页

12.2 man  

12.3 clear  

12.4 alias  

12.5 echo 

 12.6 date

12.7 umask

12.8 创建终端

13 关机重启

13.1 poweroff

13.2 shutdown

13.3 reboot

13.4 查看内核版本信息

 13.5 查看发行版信息

13.6 查看空闲内存 

14 练习

15 需要安装的组件


7 压缩包管理

7.1 tar

tar [主选项+辅选项] 文件或者目录
tar可以为文件和目录创建档案。利用tar命令用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。使用该命令时,主选项是必须要有的,辅选项是辅助使用的,可以选用。 主选项包括:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。
t 列出档案文件的内容,查看已经备份了哪些文件。
u 更新文件。用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
x 从档案文件中释放文件。(常用)

 辅选项包括:

f 使用档案文件或设备,这个选项通常是必选的。(常用)
k 保存已经存在的文件。
m 在还原文件时,把所有文件的修改时间设定为现在。
M 创建多卷的档案文件,以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。(常用)
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。(常用)
j 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。(常用)

 要将文件备份到一个特定的设备,只需把设备名作为备份文件名。

打包:
tar cvf dir.tar dir
tar xvf dir.tar dir

Linux 系统编程-开发环境(二)_第1张图片

 Linux 系统编程-开发环境(二)_第2张图片

 

 

打gz压缩包: 

tar zcvf dir.tar.gz dir
tar zxvf dir.tar.gz

Linux 系统编程-开发环境(二)_第3张图片

 

打bz2压缩包:

tar jcvf dir.tar.bz2 dir
tar jxvf dir.tar.bz2

 指定目录解压缩:

tar zxvf dir.tar.gz -C ~/test

7.2 rar 

打包:把dir压缩成newdir.rar
rar a -r newdir dir
解包:把newdir.rar解压缩到当前目录
        unrar x newdir.rar

7.3 zip  

打包:
zip -r dir.zip dir

 解包:

  unzip dir.zip

进程管理

8.1 who

查看当前在线上的用户情况。所有的选项都是可选的,不使用任何选项时,who命令将显示以下三项内容:
login name:登录用户名;
terminal line:使用终端设备;
login time:登录到系统的时间。
Linux 系统编程-开发环境(二)_第4张图片

8.2 ps  

        ps [选项]

ps命令用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。选项部分如下:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
-r 只显示正在运行的进程。
-a:即all,查看当前系统所有用户的所有进程
-u:查看进程所有者及其他一些详细信息
-x:显示没有控制终端的进程

 这个命令参数有很多,但一般的用户只需掌握一些最常用的命令参数就可以了。 最常用的三个参数是u、a、x, 我们首先以root身份登录系统,查看当前进程状况。

Linux 系统编程-开发环境(二)_第5张图片

 Linux 系统编程-开发环境(二)_第6张图片

 

Head标头:  
Linux 系统编程-开发环境(二)_第7张图片

 

  1. ss状态

    • S:睡眠状态(Sleeping or interruptible sleep)指示进程正在等待某个事件的发生。这个事件可能是IO操作的完成、等待用户输入等。当进程处于这个状态时,它是可以被中断的,响应系统信号。

    • R:运行状态(Running)表示进程正在运行或准备运行。进程正在执行指令或者正在等待CPU时间片以继续执行。

    • D:不可中断状态(Uninterruptible sleep)指示进程正在等待某个事件,但这个状态不可被中断。通常是由于进程正在执行系统调用或者等待IO操作的完成。

    • T:停止状态(Stopped)表示进程已被停止,通常由用户或其他进程发送的信号导致。进程在停止状态下不会执行任何指令。

    • Z:僵尸状态(Zombie)表示进程已经终止执行,但是其父进程尚未处理该进程的退出状态。僵尸进程会继续占用系统资源,直到被其父进程收回。

  2. s+状态

    • S+:使用s表示睡眠状态(Sleeping or interruptible sleep),表示进程处于可中断的睡眠状态。
    • R+:使用R表示运行状态(Running),表示进程正在运行

8.3 jobs 

用来显示当前shell 下正在运行哪些作业(即后台作业)
$ cat

(按下Ctrl-z挂起当前进程) 

[1]+ Stopped
cat
$ cat

(按下Ctrl-z挂起当前进程)  

[1]+ Stopped
cat
$ jobs
[1]- Stopped
cat
[2]+ Stopped
cat
  第一列方括号中的数字表示作业序号,它是由当前运行的shell 分配的,而不是由操作系统统一分配的。在当前shell 环境下,第一后台作业的作业号为1,第二作业的作业号为2,等等。第二列中的“+”号表示相应作业的优先级比“-”号对应作业的优先级高。第三列表明作业状态,是否为运行、中断、等待输入或停止等。最后列出的是创建当前这个作业所对应的命令行。

8.4 fg

fg [job…]

 

把指定的后台作业或挂起作业移到前台运行。 参数job是一个或多个进程的PID,或者是命令名称,或者是作业号(作业号前面要带一个%号)。通常在shell中输入命令启动进程后,如果该进程需要与用户交互,那么此后用户的键盘输入都被该进程读取,直到该进程退出后才出现shell提示符$,这种进程为前台进程。如果在命令行的末尾加上&字符,则shell为这个命令创建一个后台进程,它虽然也可以输出到屏幕,但是不能读取键盘输入,不管执行命令的进程有没有退出都立刻回到shell提示符接受下一条命令的输入。如果该进程也需要读取键盘输入,则被挂起等待直到用户用fg命令把它变成前台进程。如果一个命令需要较长的处理时间并且不需要与用户交互,就适合把它放在后台执行。

8.5 bg

bg [job…]
把被挂起的进程提到后台执行。 其中,job是一个或多个进程的PID、命令名称或者作业号,在参数前要带%号。
$ cat

 (按下Ctrl-z挂起当前进程)

[1]+ Stopped
cat
$ bg %1
[1]+ cat &
$(再回车一次)
[1]+ Stopped
cat
$ fg %1
cat
(按Ctrl-d输入文件结束符)
$

8.6 kill  

向指定进程发送信号
kill [ -signal | -s signal ] pid ...

查看信号编号  

 kill -l [ signal ]

给一个进程发信号,或终止一个进程的运行。 Linux 系统编程-开发环境(二)_第8张图片

 

kill命令如果不带参数而直接跟pid,就是发给该进程SIGTERM信号,大部分进程收到该信号就会终止。但是被挂起的进程不能处理信号,所以必须发SIGKILL信号,由系统强制终止进程。
Linux 系统编程-开发环境(二)_第9张图片 

8.7 env

查看当前进程环境变量

$env

* vim /.bashrc
配置当前用户环境变量
* vim /etc/profile
配置系统环境变量,配置时需要有root权限
export PATH=$PATH:新路径

8.8 top 

top命令在Linux中用于实时监视系统的关键性能指标和运行中的进程。它提供了一个动态更新的任务管理器,可以显示CPU、内存、磁盘IO、网络等系统资源的使用情况,同时还列出了当前运行的进程的详细信息。

9 用户管理

9.1 创建用户

sudo useradd -s /bin/bash -g itcast -d /home/itcast -m itcast
sudo useradd -s /bin/sh -g group -G adm,root xwp
此命令新建了一个用户xwp,该用户的登录Shell是/bin/sh,他属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
-s 指定新用户登陆时shell类型
-g 指定所属组,该组必须已经存在
-G 指定附属组,该组必须已经存在
-d 用户家目录
-m 用户家目录不存在时,自动创建该目录

9.2 设置用户组

sudo groupadd itcast

9.3 设置密码

sudo passwd itcast

9.4 切换用户

        su 用户名

su itcast

9.5 root用户

变成root用户

sudo su

设置root密码

passwd

9.6 删除用户

userdel 选项 用户名
常用的选项是-r,他的作用是把用户的主目录一起删除。 例如:
sudo userdel -r itcast
此命令删除用户itcast在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。

10 网络管理

安装

Linux 系统编程-开发环境(二)_第10张图片 

10.1 ifconfig

1.查看网卡信息
ifconfig
2.关闭网卡
sudo ifconfig eth0 down
3.开启网卡eth0
sudo ifconfig eth0 up
4.给eth0配置临时IP
sudo ifconfig eth0 IP

Linux 系统编程-开发环境(二)_第11张图片

 

 10.2 ping

ping [选项] 主机名/IP地
查看网络上的主机是否在工作。它向该主机发送ICMP ECHO_REQUEST包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。
命令中各选项的含义如下:
-c 数目 在发送指定数目的包后停止。
-d 设定SO_DEBUG的选项。
-f 大量且快速地送网络封包给一台机器,看它的回应。
-I 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-l 次数 在指定次数内,以最快的方式送封包数据到指定机器(只有超级用户可以使用此选项)。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 不经由网关而直接送封包到一台机器,通常是查看本机的网络接口是否有问题。
-s 字节数 指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

10.3 netstat

netstat [选项]

显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。命令中各选项的含义如下:
-a 显示所有socket,包括正在监听的。
-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息,格式同“ifconfig -e”。
-n 以网络IP地址代替名称,显示出网络连接情形。
-r 显示核心路由表,格式同“route -e”。
-t 显示TCP协议的连接情况。
-u 显示UDP协议的连接情况。
-v 显示正在进行的工作。

Linux 系统编程-开发环境(二)_第12张图片

 

 10.4 nslookup

nslookup name
查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。不带参数使nslookup命令时,出现提示符“>”,在后面输入要查询的IP地址或域名并回车即可。如果要退出该命令,输入exit并回车即可。
itcast@ubuntu:~$ nslookup
> www.itcast.cn
Server:
127.0.0.1
Address:
127.0.0.1#53
Non-authoritative answer:
Name:
www.itcast.cn
Address: 115.29.149.42
>

10.5 finger 

  finger [-lmsp] user [user@host …] 查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。 命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。
itcast@ubuntu:~$ finger itcast
Login: itcast
Name: itcast
Directory: /home/itcast
Shell: /bin/bash
On since Mon Sep 8 08:55 (CST) on tty7 14 hours 48 minutes idle
On since Mon Sep 8 21:57 (CST) on pts/1 from :0
11 minutes 18 seconds idle
On since Mon Sep 8 23:12 (CST) on pts/2 from :0
6 seconds idle
No mail.
No Plan.

11  常用服务器构建

11.1 ftp

11.1.1 ftp服务器

1.安装vsftpd服务器

sudo apt-get install vsftpd

2.配置vsftpd.conf文件  

sudo vi /etc/vsftpd.conf

添加下面设置  

anonymous_enable=YES
anon_root=/home/itcast/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0022
3.重启服务器,重新加载/etc/vsftpd.conf配置文件
注意:在重启服务器前要在/home/itcast目录下创建好ftp目录。

 

ubuntu12.04下
sudo /etc/init.d/vsftpd restart
ubuntu14.04下
sudo /lib/init/upstart-job vsftpd restart
4.进入你的/home/itcast/ftp目录下创建一个空目录,供用户上传
cd ~/ftp
mkdir anonymous
chmod 777 anonymous

5.测试上传功能,登陆ftp服务器,进入到anonymous目录  

ftp IP
cd anonymous

6.上传命令,可以把你当前目录下的文件上传到ftp服务器的anonymous目录  

put somefile
get somefile

11.1.2 ftp客户端

Ubuntu 默认已经安装ftp客户端

11.1.3 lftp客户端

lftp也是一种 ftp客户程序。它是以文本方式操作的,但是比起图形界面更为方便。lftp几乎具有bash的所有方便功能,Tab 补全,bookmark, queue, 后台下载等可以得到支持。用法与ftp类似,主要的指令如下:
put 上传文件
mput 上传多个文件
get 下载文件
mget 下载多个文件
mirror 下载整个目录及其子目录
mirror –R 上传整个目录及其子目录
!command 调用本地shell执行命令command  
注意,有的发行版可能缺省没有安装lftp工具,需要用户自己安装。如果是Debian或 Ubuntu系统,则安装lftp软件包。
sudo apt-get install lftp

11.2 nfs  

1.安装nfs服务器 

sudo apt-get install nfs-kernel-server

 2.设置/etc/exports配置文件

sudo vi /etc/exports

 添加这行配置

/home/用户名/nfs *(rw,sync,no_root_squash)

3.在用户目录下创建nfs目录 

mkdir /home/用户名/nfs

 4.重启服务器,重新加载配置文件

sudo /etc/init.d/nfs-kernel-server restart
充当nfs服务器的主机,启动服务以后,可以使用showmount -e 查看共享出来的目录

 5.在/home/用户名/nfs目录下创建测试文件hello

cd /home/用户名/nfs
touch hello

 6.测试服务器,把服务器共享目录nfs挂在到/mnt节点

sudo mount -t nfs -o nolock -o tcp IP:/home/用户名/nfs /mnt

7.进入/mnt目录可以看到hello文件,表示构建成功
8.卸载网络共享目录
sudo umount /mnt
补充常见错误
(1).虚拟机下,mount 之前使用install nfs-common可以结决虚拟机不能mount实体系统的情况。
(2).如在mount期间出现类似“超级坏块”错误导致无法挂载,很有可能是因为nfs-kernel-server未安装

 11.3 ssh

1.安装ssh服务器

sudo apt-get install openssh-server

2.远程登陆  

ssh 用户名@IP
使用ssh访问,如访问出现错误。可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决。

 11.4 scp

远程拷贝文件,scp -r 的常用方法:
1.使用该命令的前提条件要求目标主机已经成功安装openssh-server
如没有安装使用 sudo apt-get install openssh-server 来安装
2.使用格式:
scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对/相对路径
举例:
scp -r [email protected]:/home/itcast/QQ_dir/ ./mytest/lisi
在后续会提示输入“yes”此时,只能输“yes”而不能简单输入“Y”

拷贝单个文件可以不加 -r参数,拷贝目录必须要加。 

11.5 telnet

明文传输数据,请大家自行测试

12 其它命令

12.1 终端翻页

Shift-pageup
Shift-pagedown

12.2 man  

看手册(叫做manual或man page)。每一个命令和系统函数都有自己的man page。
man man
man read 查看read命令的man page
man 2 read 查看read系统函数的man page(在第二个section中,表示为read(2))
man -k read 以read为关键字查找相关的man page

12.3 clear  

清屏。使光标和提示符回到屏幕第一行。
命令:clear
快捷键:Ctrl-l

12.4 alias  

alias [-p] name=value …
将value字符串起个别名叫 name,以后在命令行输入 name,shell自动将其解释为value,如果不带参数执行本命令,或以参数-p执行,则显示当前定义的别名列表。
$ alias
alias ls='ls --color=auto'
alias rm='rm -i'

防止rm误删除,把下面这段代码写到/.bashrc里最后面。 

mkdir -p ~/.trash
alias rm=trash
trash()
{
mv $@ ~/.trash/
}

12.5 echo 

echo [-n] 字符串
在显示器上显示一段文字,一般起到一个提示的作用。其中选项n表示输出文字后不换行;字符串可以加引号,也可以不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。查看上一个程序退出数值,正常情况程序退出值是0
echo $?

 12.6 date

查看当前时间

12.7 umask

umask [-p] -S [mode]

umask指定用户创建文件时的掩码,其中的mode和chmod的命令中的格式一样。如果不用mode参数,则显示当前的umask设置。如果用-S参数,则以符号形式显示设置。
$ umask
0022
$ umask -S
u=rwx,g=rx,o=rx
    比如该用户touch或gedit创建一个文件,则其默认权限为-rw-r-r–,如果该用户创 建一个可执行文件(比如编译生成的程序),则其默认权限为-rwxr-xr-x。也就是说,由于umask的设定,创建的文件默认是不具有g的w权限和o的w权限的,除非用chmod更改权限。

12.8 创建终端

创建终端标签 Ctrl + Shift + t
切换标签 Alt+n(n=1)
新开终端 Ctrl + Shift + n

13 关机重启

关机重启这些操作都需要有root权限

13.1 poweroff

13.2 shutdown

        shutdown -t 秒数 [-rkhncfF] 时间 [警告讯息]

-t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒).
-k : 仅送出警告讯息文字, 但不是真的要 shutdown.
-r : shutdown 之後重新开机.
-h : shutdown 之後关机.
-n : 不经过 init , 由 shutdown 指令本身来做关机动作.(不建议你用)
-f : 重新开机时, 跳过 fsck 指令, 不检查档案系统.
-F : 重新开机时, 强迫做 fsck 检查.
-c : 将已经正在 shutdown 的动作取消.

例子: 

shutdown -r now 立刻重新开机
shutdown -h now 立刻关机
shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机
shutdown -t3 -r now 立刻重新开机, 但在警告和删除processes 之间, 延迟3秒钟.
shutdown -h 10:42 'Hey! Go away!' 10:42 分关机
shutdown -r 10 'Hey! Go away!' 10 分钟後关机
shutdown -c 将刚才下的 shutdown 指令取消,必须切换至其它tty, 登入之後, 才能下此一指令.
shutdown now 切换至单人操作模式(不加任何选项时)
注意事项:
时间参数务必要加: 不是用 now, 便是用 hh:mm 或 mm now 其实就是 0 的意思

13.3 reboot

重启系统

13.4 查看内核版本信息

uname -a

 13.5 查看发行版信息

lsb_release -a

13.6 查看空闲内存 

free -m

 Linux 系统编程-开发环境(二)_第13张图片

 

14 练习

1.创建test目录,在里面创建aa bb cc三个目录,在aa里创建hello文件,在bb里创建 world目录,在cc里创建itcast.c,然后执行tree/ls -R,最后删除test

  1. 打开终端。

  2. 创建test目录:输入以下命令并按下Enter键。

    插入代码复制代码

    mkdir test

    这将在当前目录下创建一个名为test的目录。

  3. 进入test目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd test

    现在你在test目录中进行操作。

  4. 创建aa、bb和cc目录:输入以下命令并按下Enter键。

    插入代码复制代码

    mkdir aa bb cc

    这将在test目录下创建名为aa、bb和cc的三个子目录。

  5. 进入aa目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd aa

    现在你在aa目录中。

  6. 创建hello文件:输入以下命令并按下Enter键。

    插入代码复制代码

    touch hello

    这将在aa目录中创建一个名为hello的空文件。

  7. 退出aa目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd ..

    现在你回到了test目录。

  8. 进入bb目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd bb

    现在你在bb目录中。

  9. 创建world目录:输入以下命令并按下Enter键。

    插入代码复制代码

    mkdir world

    这将在bb目录中创建一个名为world的子目录。

    退出bb目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd ..

    现在你回到了test目录。

  10. 进入cc目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd cc

    现在你在cc目录中。

  11. 创建itcast.c文件:输入以下命令并按下Enter键。

    插入代码复制代码

    touch itcast.c

    这将在cc目录中创建一个名为itcast.c的空文件。

  12. 退出cc目录:输入以下命令并按下Enter键。

    插入代码复制代码

    cd ..

    现在你回到了test目录。

  13. 查看目录结构:使用tree命令或者ls -R命令都可以显示目录结构。输入以下命令并按下Enter键。

    • 使用tree命令:

      插入代码复制代码

      tree
    • 使用ls -R命令:

      插入代码复制代码

      ls -R

    这将显示test目录及其子目录和文件的树状结构或分层列表。

  14. 删除test目录及其内容:输入以下命令并按下Enter键。

    插入代码复制代码

    rm -r test

    这将递归地删除test目录及其所有子目录和文件。

请注意,在执行删除操作之前,请务必确保你确实想要删除这些目录和文件,并且已经备份了重要的数据。

15 需要安装的组件

sudo apt-get install openssh-server
sudo apt-get install nfs-kernel-server
sudo apt-get install vsftpd

你可能感兴趣的:(#网络编程,linux,运维,服务器)