在学习C基础总结了笔记,并分享出来。
01-C基础第02天(用户权限、VI操作、Linux服务器搭建)
打开终端:ctrl+alt+t
清屏:ctrl+l 或 clear
在终端中退出锁定:ctrl+c
目录
3 常用命令
4 编辑器
5 远程操作
6 webserver环境搭建
3 常用命令
1)文件管理相关
参见:C基础学习笔记——01-C基础第01天(linux介绍和基本命令)——javascript:void(0)
2)用户、权限管理相关
(1)查看当前用户:whoami
查看当前的使用的用户,而非登录用户
(2)查看登录用户:who
查看当前所有登录系统的用户信息(last命令也可以查看所有登录系统的用户的操作细节)
选项 | 含义 |
-m或am I | 只显示运行who命令的用户名、登录终端和登录时间 |
-q或--count | 只显示用户的登录账号和登录用户的数量 |
-u | 在登录时间后显示该用户最后一次操作到当前的时间间隔 |
-u或--heading | 显示列标题 |
(3)查看登录用户:w
w命令也可以查看登录当前系统的用户信息
格式:w [选项] [用户名]
如:w -l wang
注意:(1)如果w命令携带用户名,则只显示指定用户的信息,否则显示当前所有登录用户的信息。
(2)与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。
选项 | 含义 |
-h | 只显示运行who命令的用户名、登录终端和登录时间 |
-l | 显示详细信息列表,此为预设值 |
-s | 使用短列表,不显示用户登录时间、JCPU和PCPU时间 |
-u | 忽略执行程序的名称,以及该程序的PCPU时间 |
(4)退出登录账户:exit
如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登陆账户;
如果是切换后的登陆用户,退出则返回上一个登陆账号。
(5)切换用户:su
可以通过su命令切换用户,su后面可以加“-”。
su和su –命令不同之处在于,su -切换到对应的用户时会将当前的工作目录自动转换到切换后的用户主目录
如:su - user——>输入密码后,切换用户同时切换工作空间
注意:(1)su后边不加用户名,默认是root用户
(2)如果是ubuntu平台,需要在命令前加“sudo”,如果在某些操作需要管理员才能操作,ubuntu无需切换到root用户即可操作,只需加“sudo”即可。sudo是ubuntu平台下允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root 用户的登陆和管理时间,提高了安全性。
sudo使用中只有第一次需要输入密码,后边就不需要了!
(6)添加、删除组账号:groupadd、groupdel
groupadd 新建组账号
groupdel 组账号
cat /etc/group 查看用户组
如:groupadd dev
注意:需要切换到root用户才行!
(7)修改用户所在组:usermod
使用方法:usermod -g 用户组 用户名
如:usermod -g dev wang(dev为组名,wang为用户名)
注意:(1)需要切换到root用户才行!
(2)组名和用户名可以相同
(8)添加用户账号:useradd
格式:useradd [参数] 新建用户账号
如:useradd -d /home/dev-xiaoming dev-xiaoming -g dev -m(useradd -d 目录 用户名 -g 组名 -m)
然后设置密码:先切换到root用户(su);然后passwd dev-xiaoming,输入密码
注意:不可以创建多个用户!
参数 | 含义 |
-d <dirname> | 指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录 |
-m | 自动建立目录 |
-g | 指定组名称 |
注意:(1)Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户);
(2)每一个用户必须有一个主目录,所以用useradd创建用户的时候,一定给用户指定一个主目录;
(3)用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的;
(4)如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。
命令 | 含义 |
useradd -d /home/abc abc -m | 创建abc用户,如果/home/abc目录不存在,就自动创建这个目录,同时用户属于abc组 |
useradd -d /home/a a -g test -m | 创建一个用户名字叫a,主目录在/home/a,如果主目录不存在,就自动创建主目录,同时用户属于test组 |
cat /etc/passwd | 查看系统当前用户名 |
(9)设置用户密码:passwd
如:passwd dev-xiaoming
(10)删除用户:userdel
命令 | 含义 |
userdel abc(用户名) | 删除abc用户,但不会自动删除用户的主目录 |
userdel -r abc(用户名) | 删除用户,同时删除用户的主目录 |
(11)查询用户登录情况:last
不管是哪位用户从哪里登录,管理员都可以通过last命令查出,以及是否有人非法登录
(12)修改文件权限:chmod
有两种使用格式:字母法与数字法
字母法:chmod u/g/o/a +/-/= rwx 文件(文件或目录可以多个)
[ u/g/o/a ] | 含义 |
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | other 表示其他以外的人 |
a | all 表示这三者皆是 |
[ +-= ] | 含义 |
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx | 含义 |
r | read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。 |
w | write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
x | excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
chmod o+w file 给文件file的其它用户增加写权限
chmod u-r file 给文件file的拥有者减去读的权限
chmod g=x file设置文件file的同组用户的权限为可执行,同时去除读、写权限
数字法:“rwx” 这些权限也可以用数字来代替
r | 读取权限,数字代号为 "4" |
w | 写入权限,数字代号为 "2" |
x | 执行权限,数字代号为 "1" |
- | 不具任何权限,数字代号为 "0" |
如执行:chmod u=rwx,g=rx,o=r filename
就等同于:chmod u=7,g=5,o=4 filename
如:chmod 751 file:
文件所有者:读、写、执行权限
同组用户:读、执行的权限
其它用户:执行的权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。
如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。
(13)修改文件所有者:chown
使用方法:chown 用户名 文件或目录名
如:sudo chown user test01.txt——>把wang的test01.txt改为user的。
(14)修改文件所属组:chgrp
使用方法:chgrp 用户组名 文件或目录名
3)系统管理相关
(1)查看当前日历:cal
cal命令用于查看当前日历,-y显示整年日历
如:cal 2010——>显示2010年的日历
注意:1.cal 7 2010——>查看2010年7月的日历,如果输入的是cal 7查看的是公元7年的日历;
2.cal -j 12 2020——>可以查看2020年12月份的日历中是每月的第几天,对于闰年特别有用,看12月份的最后一天是不是366。
(2)显示或设置时间:date
date [MMDDhhmm[[CC]YY][.ss]] +format
注意:1.CC为年前两位yy为年的后两位,前两位的MM为月,后两位的mm为分钟,DD为天(日),hh为小时,ss为秒。如: date 010203042020.55——>设置时间为2020年1月2日3时4分55秒(需要管理员权限)
2.date '+%y,%m,%d,%H,%M,%S'——>显示20,04,08,01,14(2020年4月8日10时01分14秒)
date '+%Y,%m,%d,%H,%M,%S'——>显示2020,04,08,01,14(2020年4月8日10时01分14秒)
注意大小写!!!
format格式 | 含义 |
%Y,%y | 年 |
%m | 月 |
%d | 日 |
%H | 时 |
%M | 分 |
%S | 秒 |
(3)查看进程信息:ps
ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下
选项 | 含义 |
-a | 显示终端上的所有进程,包括其他用户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
(4)动态显示进程:top
按键 | 含义 |
M | 根据内存使用量来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运行时间的长短来排序 |
U | 可以根据后面输入的用户名来筛选进程 |
K | 可以根据后面输入的PID来杀死进程。 |
q | 退出 |
h | 获得帮助 |
(5)终止进程:kill
(6) 后台程序:&、jobs、fg
用户可以将一个前台执行的程序调入后台执行,方法为:命令 &
如果程序已经在执行,ctrl+z可以将程序调入后台
jobs查看后台运行程序
fg编号(编号为通过jobs查看的编号),将后台运行程序调出到前台
(7)关机重启:reboot、shutdown、init
注意:需要切换到超级管理员root,一般关机:su;输入密码;init 0
命令 | 含义 |
reboot | 重新启动操作系统 |
shutdown –r now | 重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:25 | 系统在今天的20:25 会关机 |
shutdown -h +10 | 系统再过十分钟后自动关机 |
init 0 | 关机 |
init 6 | 重启 |
(8)字符界面和图形界面切换
注意: 重启后才能切换
在redhat平台下,可通过命令进行切换
init 3 | 切换到字符界面 |
init 5 | 切换到图形界面 |
通过快捷键切换(适用大部分平台)
Ctrl + Alt + F2 | 切换到字符界面 |
Ctrl + Alt + F7 | 切换到图形界面 |
(9)检测磁盘空间:df
选项 | 含义 |
-a | 显示所有文件系统的磁盘使用情况 |
-m | 以1024字节为单位显示 |
-t <fs> | 显示各指定文件系统的磁盘空间使用情况 |
-T | 显示文件系统 |
(10)检测目录所占磁盘空间:du
du命令用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况
格式:du [选项] 目录或文件名
选项 | 含义 |
-a | 递归显示指定目录中各文件和子目录中文件占用的数据块 |
-s | 显示指定文件或目录占用的数据块 |
-b | 以字节为单位显示磁盘占用情况 |
-l | 计算所有文件大小,对硬链接文件计算多次 |
(11)格式化:mkfs
相当于DOS/Windows系统中的格式化命令,用于创建指定的文件系统
格式:mkfs [选项] 设备文件名 [blocks]
选项 | 含义 |
-V | 详细显示模式 |
-t <.fs> | 指定文件系统类型,默认值为 ext2 |
-c | 在创建文件系统的同时,进行磁盘坏块检查 |
blocks | 文件系统块的大小 |
(12)应用软件安装和卸载
在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat公司提出的,用于管理Linux下软件包的软件。它是一种软件打包发行并且实现自动安装的程序,需要用rpm程序安装的软件包,其后缀是.rpm,并可以对这种程序包进行安装、卸装和维护。
选项 | 含义 |
-i | 指定安装的软件包 |
-h | 使用“#”显示详细的安装过程及进度 |
-v | 显示安装的详细信息 |
-q | 查询系统是否已安装指定的软件包 |
-a | 查看系统已安装的所有软件包 |
-e | 卸载软件包 |
--nodeps | 配合-e参数使用,强制卸载不检查依赖项 |
--force | 强制操作 如强制安装删除等 |
如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷
命令 | 含义 |
sudo apt-get update | 获得最新的软件包的列表 |
sudo apt-get install xxx | 从源中安装xxx软件 |
sudo apt-get remove xxx | 删除xxx软件 |
(13)查看或配置网卡信息:ifconfig
显示字段 | 说明 |
eth0 | 网络接口名称 |
Link encap | 链路封装协议 |
Hwaddr | 网络接口的MAC地址 |
Inet addr | IP地址 |
Bcast | 广播地址 |
Mask | 子网掩码 |
UP | 网络接口状态标识,UP已经启用,DOWN已经停用 |
BROADCAST | 广播标识,标识网络接口是否支持广播 |
RUNNING | 传输标识,标识网络接口是否已经开始传输分组数据 |
MULTICAST | 多播标识,标识网络接口是否支持多播 |
MTU,Metric | MTU:最大传输单位,单位:字节。Metric:度量值,用于RIP建立网络路由用 |
RX bytes | 接收数据字节统计 |
TX bytes | 发送数据字节统计 |
我们可以通过ifconfig配置网络参数:
只有root才能用ifconfig配置参数,其他用户只能查看网络配置
ifconfig 网络接口名称 [地址协议类型] [address] [参数]
地址协议类型如:inet(IPv4),inet6(IPv6)等
如:ifconfig eth0 inet 192.168.10.254 netmask 255.255.255.0 up
参数 | 功能 |
-a | 显示所有网络接口状态 |
inet [IP地址] | 设置IP地址 |
netmask [子网掩码] | 设置子网掩码 |
up | 启用网络接口 |
down | 关闭网络接口 |
注意:ifconfig配置的网络参数在内存中,计算机重新启动之后就失效了,如果需要持久有效就需要修改网络接口的配置文件
redhat修改/etc/sysconfig/network-scripts/ifcfg-eth0文件:
IPADDR=IP地址
GATEWAY=默认网关
ubuntu修改/etc/NetworkManager/system-connections/Wired connection 1文件:
[ipv4]
method=manual
addresses1=IP地址;24;默认网关;
(14)测试远程主机连通性:ping
ping通过ICMP协议向远程主机发送ECHO_REQUEST请求,期望主机回复ECHO_REPLY消息
通过ping命令可以检查是否与远程主机建立了TCP/IP连接
格式:ping [参数] 远程主机IP地址
参数 | 功能 |
-a | 每次相应时都发出声音警示 |
-A | 表示以实际往返相应时间为间隔,连续发送消息 |
-f | 连续不断发送消息,不管是否收到相应 |
-n | 只显示主机IP,不需要把IP解释成主机名 |
-c | 发送指定次数数据报信息后停止,ping -c 5 192.168.10.254 |
-i | 每次发送消息时间间隔,默认一秒,ping -i 2 192.168.10.254 |
-s | 分组数据大小,默认56字节 |
-w | 以秒为单位的超时值,一旦超时,就立即停止 |
(15)网络路由设置:route
route可以增加,修改,显示路由信息
格式:route [-v] [-A family] add default [gw 默认网关地址] [[dev interface]]
如:route add default gw 192.168.1.1 dev eth0
参数 | 功能 |
add | 增加路由信息 |
del | 删除路由信息 |
-v | 显示路由信息 |
-A | 指定网络协议inet(IPv4),inet6(IPv6) |
gw | 指定默认网关地址 |
dev | 指定网络接口 |
(16)监控网络状态:netstat
netstat命令监控网络状态,包括接口设置,IP路由,各种网络协议的统计。
类似于Windows中“任务管理器”——>“性能”选项卡——>“打开资源监视器”——>“网络”选项卡
netstat输出信息说明如下
字段 | 说明 |
Proto | 协议,如:tcp,udp |
Recv-Q | 尚未读取的数据字节数 |
Send-Q | 尚未发送的数据字节数 |
Local_address | 本地主机地址与端口号 |
Foreign_address | 远程主机与端口号 |
State | 网络连接状态 |
RefCnt | 引用计数,表示加接到相应套接字的进程数量 |
Flags | 标志字段 |
Type | 套接字类型,如:(SOCK_DGRAM, SOCK_STREAM,SOCK_RAW) |
State | 套接字状态 |
Path | 套接字路径名 |
netstat常用命令参数
参数 | 功能 |
-a | 列出所有端口 |
-i | 显示网络接口列表 |
-at | 所有tcp端口 |
-au | 所有udp端口 |
-l | 所有监听端口 |
-lt | tcp监听端口 |
-lu | 指定网络接口 |
-s | 显示所有协议统计信息 |
-r | 当前路由状态 |
-p | 输出中显示 PID 和进程名称,可以与其它开关一起使用,如:-pt |
4 编辑器
1)gedit编辑器
2)vi编辑器
进入文本编辑器:vi
注意1.进入文本编辑器有两种模式:文本编辑模式(插入模式)和命令行模式;两个模式可以通过“Esc”键切换。
2.在Ubuntu下,在vi的命令行模式下:set nu显示行号。
(1)vi基本操作
1.打开文件:vi filename
2.编辑文件:按:“i”进入插入模式;按“Esc”退出插入模式
3.保存文件:一定要先退出插入模式(按Esc进入命令模式),然后,shift + zz (按住 “shift” + 按两下“z”键) 即可保存退出当前文件
(2)vi实用命令
1.vi的插入模式
按键 | 功能 |
a | 光标位置右边插入文字 |
i | 光标位置当前处插入文字 |
o(字母) | 光标位置下方开启新行 |
O(字母) | 光标位置上方开启新行 |
I | 光标所在行首插入文字 |
A | 光标所在行尾插入文字 |
2.vi的退出
注意:必须是命令行模式!!!
按键 | 功能 |
ZZ(shift+z+z) | 保存退出 |
:wq | 保存退出 |
:x(小写) | 保存退出 |
:w filename | 保存到指定文件 |
:q | 退出,如果文件修改但没有保存,会提示无法退出 |
:q! | 退出,不保存 |
:!命令 | 暂时离开vi,执行命令 |
3.vi的删除和修改功能
按键 | 功能 |
[n]x | 删除光标后 n 个字符 |
[n]X | 删除光标前 n 个字符 |
D | 删除光标所在开始到此行尾的字符 |
[n]dd | 删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除) |
[n]yy | 复制从当前行开始的 n 行(向下复制,“-3yy”仍然是向下复制) |
p | 把粘贴板上的内容插入到当前行 |
dG | 删除光标所在开始到文件尾的所有字符 |
J | 合并两行 |
. | 执行上一次操作 |
u | 撤销前一个命令 |
4.vi的行定位功能
按键 | 功能 |
Ctrl + f | 向前滚动一个屏幕 |
Ctrl + b | 向后滚动一个屏幕 |
gg | 到文件第一行行首 |
G(大写) | 到文件最后一行行首,G必须为大写 |
:$ | 到文件最后一行行首 |
mG或mgg | 到指定行,m为目标行数 |
/内容 | 查找指定内容(定位到第一个查找到的首字符) |
5.vi的文本查找功能
按键 | 功能 |
/字符串 | 查找指定字符串 |
n | 寻找下一个 |
N | 回到前一个 |
? | 寻找上一个 |
/^字符串 | 查找以字符串开始的行 |
/字符串$ | 查找以字符串结尾的行 |
/a.b | 查找字符串a任意字符b |
6.vi的替换功能
按键 | 功能 |
r | 替换当前光标字符 |
:r 文件名 | 在光标当前位置(下一行)载入另一个文件(不能插入目录) |
:s/p1/p2/g | 将当前行中所有p1均用p2替代 |
:g/p1/s//p2/g | 将文件中所有p1均用p2替代 |
:n1,n2s/p1/p2/g | 将n1到n2行中所有p1均用p2替代 |
7.vi的set指令
按键 | 功能 |
:set ic | 搜寻时忽略大小写 |
:set noic | 搜寻时不忽略大小写 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
5 远程操作
Windows远程登录Linux
1.安装软件Xshell
2.打开Linux服务器,选择网络连接模式:选择“桥接模式”并且勾选“复制网络连接状态”
3.重启Linux服务器
4.通过Xshell建立连接:选择“ssh”协议,并设置ip地址(在Linux:ifconfig)
5.如果没有连接上,检查:(1)Windows防火墙是否关闭;(2)Ping命令是否连接
注意:在Xshell中一定不要用Windows的Ctrl+C等快捷键!!!如果卡死,只能关闭重启!
Linux系统远程连接到Linux服务器
命令:sudo ssh -l username hostip
参数 | 含义 |
-l | 选项, 是字母“l”,不是数字“1” |
username | 被远程登录的用户名 |
hostip | 被远程登录的ip地址 |
上传下载:
lcd切换本地路径
cd远程服务器路径
上传:put 文件1 文件2
下载:get 文件1 文件2
6 webserver环境搭建
搭建服务器:
1.通过lcd和put上传文件http.tar.gz
2.tar -zxvf http.tar.gz;转到目录:cd http
3.切换超级用户;重新编译代码:make
4.启动程序:./myhttp start
5.通过ip地址192.168.20.32访问网页
创建网页:
1.确定http目录
2.vi hello.c——>添加代码
3.gcc -o hello.cgi hello.c
4.启动程序:./myhttp start
5.通过ip地址192.168.20.32访问网页
在学习C基础总结了笔记,并分享出来