计算机的历史
Alan Mathison Turing1936
《模仿游戏》
Claude Elwood Shannon1938
《继电器与开关电路的符号分析》将电路开关与布尔代数结合起来
John von Neumann
ENIAC1946电子管计算机
晶体管计算机
中小型集成电路计算机
超大规模集成电路计算机
CPU:基准速度、内核、逻辑处理器
x86架构(复杂指令集)、ARM架构(精简指令集)
Linux常用命令
查看date命令怎么用:
man date按q退出
whatis date
info date按ctrl+c退出
date --help
pwd(print working directory):用于显示当前目录的路径
ls(list directory contents):列出当前目录下的所有文件和目录
ls -a:列出所有文件,包括隐藏文件
ls -A:列出所有文件,包括隐藏文件,不包括. ..无效信息
ls -l ==ll:详细信息
cd(change the working directory):切换到指定目录
cd ~:回到家目录
cd /:回到根目录
mkdir(make directory):创建目录
mkdir -p aa/bb/cc:创建多级目录
touch:创建空文件,修改文件的时间参数
stat test.txt
Access: 2022-10-04 15:38:57.665468778 +0800:最近一次访问它的时间
Modify: 2022-10-04 15:38:54.517446870 +0800:最近一次修改文件内容的时间
Change: 2022-10-04 15:38:54.517446870 +0800:通过某些命令修改的时间
cp(copy):复制文件或目录
cp -r aa aa_cp:复制多级文件夹
cat(concatenate):一次显示整个文件、从键盘创建一个文件、将几个文件合并成一个文件
cat > t1
i love you
^C
创建了一个名为t1的文件,内容是i love you,如果文件已存在,就会覆盖掉里面原来的内容
cat >> t2
hello world
^C
向t2文件中添加内容,不覆盖
cat t1 t2 > t3把t1,t2合并到t3文件中
cat -n t3:把t3的内容输出并显示行号
mv(move):移动文件或目录
mv t4.txt cc:将t4.txt移动到cc文件夹下
mv t3 t3.0:重命名
rm(remove):删除文件或目录
more:以全屏幕的方式按页显示文本内容more /etc/profile
less:与more类似,支持各种显示终端less /etc/profile
head:默认查看文件前10行内容-n改变行数head -n 5 /etc/passwd
tail:默认查看文件尾10行内容-f:动态显示tail -n 5 -f secure
echo:输出变量或常量到控制台
echo hello world
echo "1111\r\n5555"
echo "i love you" > t4
find:从指定目录下查找满足条件的文件或目录显示在终端上
locate:快速在整个系统中定位文件目录
mv t4 tecer.txt刚创建的文件需要更新一下缓存再locate
updatedb
locate tecer.txt
[ccc@192 root]$ find / -name "*txt"在子账户下查找会导致有些文件无权限查看
[ccc@192 root]$ find / -name "*txt" 2>/dev/null这样就可以解决了
grep:过滤查找cat /etc/passwd | grep "ccc"(|表示管道符,就是将前一条命令的输出结果作为后一条命令的输入)
-i:忽略大小写cat /etc/passwd | grep -i "ccC"
-n:行号cat /etc/passwd | grep -n -i "ccC"
tar:打包或者解压文件
tar -zcvf t1.tar.gz aa tecer.txt把aa和tecer.txt压缩成t1.tar.gz
tar -zxvf t2.tar.gz把t2.tar.gz解压到当前目录下
tar -zxvf t2.tar.gz -C hh把t2.tar.gz解压到hh目录下
vi/vim文本编辑
vim == vi plus
命令模式下dd删除整行
软件安装:
Linux软件安装方式:
Red hat系列:源代码编译安装、rpm安装、yum安装、dnf安装
Debian系列:源代码编译安装、dpkg安装、apt安装
源代码编译安装过程(redis为例):
进入redis官网,点击 install from source按步骤来
wget https://download.redis.io/redis-stable.tar.gz(也可以迅雷)
解压安装包tar -zxvf redis-stable.tar.gz
cd redis-stable/
less INSTALL查看如何安装
less README.md
make && make install安装
redis-server启动服务端
ctrl+c退出
yum(基于python2.7.5)安装:
yum search python3查看python3源
yum info python3.x86_64查看信息确认
yum install -y python3.x86_64安装
python3 --version查看版本:3.6.8
版本管理:
python --version此时系统的默认版本为python2.7.5
cd /usr/bin/
ls -l python
ls -l python2
ls -l python2.7链接到的才是真正的exe文件
alternatives版本切换命令
alternatives --list
alternatives --config版本配置
alternatives --config python此时不执行,因为没有python这个名字在list中
alternatives --install <link> <name> <path> <priority>用法
alternatives --install /usr/bin/python python /usr/bin/python2.7 1优先级为1名字为python
此时再alternatives --config python就会有
*+ 1 /usr/bin/python2.7
Enter to keep the current selection[+], or type selection number: 1
按1结束
alternatives --install /usr/bin/python python /usr/bin/python3.6 2优先级为2名字为python
此时再alternatives --config python就会有
+ 1 /usr/bin/python2.7
* 2 /usr/bin/python3.6
Enter to keep the current selection[+], or type selection number: 2
按1结束
此时就会把3.6版本确认为系统版本
再python --version
Python 3.6.8
不够需要把版本配置成python2才能使用yum(创建yum源的人去世了,没有继续更新维护)
多用户目的:划分权限
Linux是一个多用户多任务的分时操作系统
useradd、userdel、usermod、passwd
每个用户都在/etc/passwd目录下
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码口令(为了安全用x代替放在了/etc/shadow,密文):用户标识号(0-65535整数、0是root、1-999是系统保留1000以后是其他用户):组标识号:描述:主目录:shell进程
用户组管理命令groupadd、groupdel、groupmod(修改属性)、newgrp切换到其他组
文件权限
chown(change owner):修改所属用户和组
chmod(change mode):修改用户权限
文件类型 属主权限 属组权限 其他用户权限
0 1 2 3 4 5 6 7 8 9
d r w x r - x r - x
目录文件 读写执行 读写执行 读写执行
chown:更改属主或属组-R:如果是修改一个目录,加上-R会修改到目录下所有文件
chmod:r:4 w:2 x:1 数字或符号都可以
cat /etc/group所有组
-rw-r--r--
chmod 750 test.txt
-rwxr-x---
q!强制退出
网络管理
ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.221.128 netmask 255.255.255.0 broadcast 192.168.221.255
inet6 fe80::5430:a0da:76a0:1381 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:af:62 txqueuelen 1000 (Ethernet)
RX packets 3834 bytes 280027 (273.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1693 bytes 206226 (201.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 464 bytes 40304 (39.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 464 bytes 40304 (39.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:79:8c:2a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:网卡 inet:网址 netmask:子网掩码 ether:mac地址 RX:收到的数据包 TX:发出的数据包
做设置之前一定对虚拟机做一个快照备份,以免设置不回来了
route add -net 192.168.0.123 netmask 255.255.255.0 gw 192.168.0.1
route del -net 192.168.0.123 netmask 255.255.255.0 gw 192.168.0.1
service network restart:重启网卡
ping 8.8.8.8
telnet:主机端口
telnet 0.0.0.0 22
netstat查看网络状态
netstat -tn
192.168.221.128:22
系统状态管理
date
cal日历
w用户登录信息
uname -a系统信息
whatis man
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
man (7) - macros to format man pages
man man默认进入第一个查找手册
free:内存
du:磁盘
du -kt 10M /:把根目录下大于10M的文件打印
du -d1 -kt 1M / 2>/dev/null:d1一级目录
程序:静态文件
进程:动态程序
服务:后台响应程序
前台启动:./ping.sh
后台启动:nohup ./ping.sh &
whereis ping:whereis是针对exe的
也可以vi ping.sh
然后把ping www.baidu.com写进去
chmod +x ping.sh给予执行权限(+x直接所有用户可执行,比较危险)
./ping.sh执行
ps -ef | grep "ping"查看当前进程过滤出ping的
root 5467 3033 0 09:17 pts/0 00:00:00 ping baidu.com前台启动
ccc 5478 5427 0 09:18 pts/1 00:00:00 grep --color=auto ping
nohup ./ping.sh
nohup: ignoring input and appending output to ‘nohup.out’
本地就会有一个nohup.out文件在后台执行
tail -f nohup.out可以查看
加一个&可以在后台运行nohup ./ping.sh &
jobs
fg %+数字(1)可从后台切到其他关闭
root 6662 3033 0 09:57 pts/0 00:00:00 /bin/sh ./ping.sh
root 6666(pid) 6662(父id) 0 09:57 pts/0 00:00:00 ping www.baidu.com
也可以kill -9 6662(-9是强制执行)关闭后台进程
pstree以树的形式
systemctl status *.service查看所有服务状态
systemctl start *.service启动服务
systemctl restart *.service重启服务
systemctl stop *.service关闭服务
systemctl enable *.service开机启动服务
systemctl disable *.service停止开机启动
top(集大成者,相当于Windows下的任务管理器)
top默认3s刷新一次
按h进入帮助
shift+z设置格式
crontab -u root -r 删除任务
crontab -u root date1.cron 把文件添加到某个用户
crontab -u root -l 列举任务
crontab -u root -e 编辑任务
/etc/crontab管理文件,系统任务调度的配置文件
/var/spool/cron/每个用户包括root的crontab任务
/etc/cron.d/存放任何要执行的crontab文件或 脚本
crontab -u root -e
*/1 * * * * /root/date.sh每一分钟执行一次date.sh的命令