Linux基础介绍【第三篇】

更改SSH服务端远程登录的配置

windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest。Linux的管理用户是root,普通用户默认有很多个,远程连接默认端口是22。

修改配置文件/etc/ssh/sshd_config,13行Port 22(默认端口22),改为Port 52113(范围0——65535);15行ListenAddress 0.0.0.0 (监听ip地址),改为ListenAddress 192.168.131.1;43行PermitRootLogion yes(root用户远程连接),改为PermitRootLogion no;122行UseDNS yes(DNS解析),改为UseDNS no;GSSAPIAuthentication yes(SSH连接慢),改为GSSAPIAuthentication no;

cat –n:查看行号

vim à:set nu à显示行号

diff比较2个文件的不同之处。

[[email protected] ssh]# diff sshd_config sshd_config.oldboy.20161204

vimdiff以高亮方式比较2个文件的不同之处。

[[email protected] ssh]# vimdiff sshd_config sshd_config.oldboy.20161204

sed替换:

  1. [[email protected] ssh]# sed -ir ‘13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthenication no‘ sshd_config

重启生效:/etc/init.d/sshd restart(可能影响用户)或/etc/init.d/sshd reload(平滑重启)。

查看端口:

netstat -lntup|grep sshd

利用sudo控制用户对系统命令的使用权限

管理sudo命令:

visudo或vi /etc/sudoers,visudo更好。vi命令模式直接输入行数+gg到固定的行数,显示行号:set nu,yy(复制)+p(粘贴)复制当前行到下一行,shift+a到结尾处于编辑状态。

98+gg: 98 root ALL=(ALL) ALL

给oldboy授予root权限:

oldboy ALL=(ALL) ALL

oldboy ALL=(ALL) NOPASSWD:ALL(不提示输入密码)

用oldboy添加一个用户oldgirl:

  1. [[email protected] ~]$ sudo useradd oldgirl
  2. #输入oldboy密码
  3. [sudo] password for oldboy:
  4. #添加成功
  5. [[email protected] ~]$ tail -1 /etc/passwd
  6. oldgirl:x:501:501::/home/oldgirl:/bin/bash

给oldboy授予固定权限:

oldboy ALL=(ALL) /bin/touch,/usr/sbin/useradd

注意:需要命令的全路径,查看命令全路径which 命令,例如:

  1. [[email protected] ~]# which useradd
  2. /usr/sbin/useradd
  3. [[email protected] ~]# which touch
  4. /bin/touch

find查找:find / -type f -name "useradd"

whereis查找:whereis -b useradd

locate查找:locate useradd

环境变量:

PATH系统路径变量,执行ls、cp等非内置命令时,系统会查找PATH里对应的路径是否存在,如果没有就报告找不到该命令。当执行which cp来查看命令所在路径的时候,也就是从PATH变量去搜索。

PATH变量的临时修改 export PATH="/tmp:$PATH",永久生效将命令放到/etc/profile下,使用source /etc/profile 使得立刻生效。

Linux中文显示设置

查看当前字符编码:

  1. [[email protected] tmp]# cat /etc/sysconfig/i18n
  2. LANG="en_US.UTF-8"
  3. SYSFONT="latarcyrheb-sun16"

操作前先进行备份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20161205

  1. [[email protected] sysconfig]# sed -i ‘s#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g‘ /etc/sysconfig/i18n
  2. [[email protected] sysconfig]# cat /etc/sysconfig/i18n
  3. LANG="zh_CN.UTF-8"
  4. SYSFONT="latarcyrheb-sun16"
  5. #立刻生效
  6. [[email protected] sysconfig]# source /etc/sysconfig/i18n
  7. [[email protected] sysconfig]# echo $LANG
  8. zh_CN.UTF-8

注意:客户端字符集需改为UTF-8。

设置Linux服务器时间同步

显示时间:date

修改时间:date –s "时间" àhwclock

显示日历:cal

同步互联网时间:

  1. [[email protected] tmp]# /usr/sbin/ntpdate time.nist.gov

定时任务执行同步:

  1. #每5分钟执行一次同步
  2. [[email protected] tmp]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
  3. [[email protected] tmp]# crontab -l
  4. */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

下面三种方法是等价的:

/dev/null 空设备(黑洞)

错误和正确都输出到/dev/null:

1、1>/dev/null 2>/dev/null

2、1>/dev/null 2&1

3、&>/dev/null

时间同步架构

小规模时间同步架构:

大规模时间同步架构:

设置Linux默认历史记录数

命令如下,注意此时的配置仅临时生效。

  1. #设置历史记录数5
  2. [[email protected] ~]# HISTSIZE=5

把配置参数放入配置文件,使得永久生效。

  1. #设置终端超时时间
  2. [[email protected] ~]# echo ‘TMOUT=300‘ >>/etc/profile
  3. #设置历史记录数
  4. [[email protected] ~]# echo ‘HISTSIZE=5‘ >>/etc/profile
  5. #设置文件记录数cat ~/.bash_history
  6. [[email protected] ~]# echo ‘HISTFILESIZE=5‘ >>/etc/profile

TMOUT=10:连接的超时时间控制变量。

HISTSIZE=5:命令行的历史记录数量变量。

HISTFILESIZE=10:历史记录文件的命令行数量变量(~/.bash_history)。

历史记录清空:history -c。

删除指定历史记录:history -d 10(删除10号历史记录)。

加大服务器文件描述符

文件描述符的概念

1、表示形式为整数数字(0——65535)。

2、进程使用的时候会占用文件描述符(标识打开的文件)。

查看默认文件描述符

  1. [[email protected] ~]# ulimit -n
  2. 1024

3、调整文件描述符

方法一:

直接把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次开机启动的时候生效。

  1. #临时生效
  2. [[email protected] ~]# ulimit -SHn 65535
  3. [[email protected] ~]# ulimit -n
  4. 65535

写入rc.local:

  1. cat >>/etc/rc.local<<EOF
  2. ulimit -HSn 65535
  3. ulimit -s 65535
  4. EOF

方法二:

在/etc/sercurity/limits.conf里面配置。

  1. [[email protected] ~]# echo ‘* - nofile 65535‘ >>/etc/security/limits.conf
  2. [[email protected] ~]# tail -1 /etc/security/limits.conf
  3. * - nofile 65536

调整内核参数文件/etc/sysctl.conf

vim编辑:shift+g切换到文件结尾

优化参数:

  1. net.ipv4.tcp_fin_timeout = 2
  2. net.ipv4.tcp_tw_reuce = 1
  3. net.ipv4.tcp_tw_recycle = 1
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_keepalive_time = 600
  6. net.ipv4.ip_local_port_range = 4000 65000
  7. net.ipv4.tcp_max_syn_backlog = 16384
  8. net.ipv4.tcp_max_tw_buckets = 36000
  9. net.ipv4.route.gc_timeout = 100
  10. net.ipv4.tcp_syn_retries = 1
  11. net.ipv4.tcp_synack_retries = 1
  12. net.core.somaxconn = 16384
  13. net.core.netdev_max_backlog = 16384
  14. net.ipv4.tcp_max_orphans = 16384
  15. #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理
  16. #net.nf_conntrack_max = 25000000
  17. #net.netfilter.nf_conntrack_tcp_timeout_established = 180
  18. #net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
  19. #net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
  20. #net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

执行生效:sysctl -p

查看网络状态:netstat -an

隐藏Linux版本信息

控制Linux显示版本信息的文件

  1. [[email protected] ~]# cat /etc/issue
  2. CentOS release 6.6 (Final)
  3. Kernel \r on an \m
  4.  
  5. [[email protected] ~]# cat /etc/issue.net
  6. CentOS release 6.6 (Final)
  7. Kernel \r on an \m

清空这个两个文件就可以了。

锁定关键系统文件,防止提权被篡改

命令:

  1. [[email protected] ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

解除锁定:chattr -i

为grub菜单加密码

为grub菜单加密码的目的是防止他人修改grub做内核等启动设置。

1、先用/sbin/grub-md5-crypt产生一个MD5密码串。

  1. [[email protected] ~]# /sbin/grub-md5-crypt
  2. Password:
  3. Retype password:
  4. $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.

2、修改grub.conf文件添加

password --md5 $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.。

  1. [[email protected] ~]# vim /etc/grub.conf
  2.   1 # grub.conf generated by anaconda
  3.   2 #
  4.   3 # Note that you do not have to rerun grub after making changes
  5.      to this file
  6.   4 # NOTICE: You have a /boot partition. This means that
  7.   5 # all kernel and initrd paths are relative to /boot/,
  8.      eg.
  9.   6 # root (hd0,0)
  10.   7 # kernel /vmlinuz-version ro root=/dev/sda3
  11.   8 # initrd /initrd-[generic-]version.img
  12.   9 #boot=/dev/sda
  13.  10 default=0
  14.  11 timeout=5
  15.  12 splashimage=(hd0,0)/grub/splash.xpm.gz
  16.  13 hiddenmenu
  17.  14 title CentOS 6 (2.6.32-504.el6.x86_64)
  18.  15 root (hd0,0)
  19.  16 kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e89
  20.     62baa-4051-4832-b0ee-e27aa74f6374 rd_NO_LUKS rd_NO_LVM LANG=en
  21.     _US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto
  22.      KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
  23.  17 initrd /initramfs-2.6.32-504.el6.x86_64.img

注意:password要加在splashimage和title之间,否则可能不生效。

禁止Linux系统被ping

命令:

  1. [[email protected] ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
  2. #立刻生效
  3. [[email protected] ~]# sysctl -p

升级具有典型漏洞的软件版本

首先查看相关软件的版本号

  1. [[email protected] ~]# rpm -qa openssl openssh bash
  2. openssl-1.0.1e-30.el6.x86_64
  3. bash-4.1.2-29.el6.x86_64
  4. openssh-5.3p1-104.el6.x86_64

执行升级已知漏洞的软件版本到最新。

  1. [[email protected] ~]# yum install openssl openssh bash

配置yum源

查看当前yum源

  1. [[email protected] ~]# cat /etc/yum.repos.d/CentOS-Base.repo

配置阿里云的yum源

  1. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

wget:下载,wget http://url;-O:下载到指定路径并改名;--spider:爬虫,检查网站是不是好的,不会下载只是检查;-T(--timeout):指定超时时间(--timeout=seconds);--tries:指定重试的次数(--tries=2);-q(--quiet):后台下载,关闭输出;

总结:

1、不用root管理,以普通用户的名义通过sudo授权管理。

2、更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改为只监听内网IP。

3、定时自动更新服务器时间,使其和互联网时间同步。

4、配置yum更新域,从国内更新源下载安装软件包。

5、关闭SELinux及iptables(在生产场景中,如果有外部IP一般要打开)

6、调整文件描述符的数量,进程及文件的打开都会消耗文件描述符。

7、定时自动清理邮件目录垃圾文件,防止inodes节点被占满。

8、精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、stsstat)。

9、Linux内核参数优化/etc/sysctl.conf,执行sysctl -p 生效。

10、更改字符集,使其支持中文。

11、锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,处理后把chattr、lasttr改名。

12、清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

13、清楚多余的系统虚拟账号。

14、为grub菜单加密码。

15、禁止被ping。

16、升级漏洞软件。

less:按屏(空格、page up/page down)或按行(回车)查看文件。

more:按屏(空格)或按行(回车)查看文件,不能向上翻。

Linux目录结构

linux只有一个顶点/(根),其他所有目录都在根下。根下面的所有目录是一个有层次的树状结构,像一颗倒挂着的大树。

  1. [[email protected] ~]# tree -L 1 /
  2. /
  3. ├── bin
  4. ├── boot
  5. ├── dev
  6. ├── etc
  7. ├── home
  8. ├── lib
  9. ├── lib64
  10. ├── lost+found
  11. ├── media
  12. ├── mnt
  13. ├── oldboy
  14. ├── opt
  15. ├── proc
  16. ├── root
  17. ├── sbin
  18. ├── selinux
  19. ├── srv
  20. ├── sys
  21. ├── tmp
  22. ├── usr
  23. └── var

tree:显示目录结构,-L:指定显示多少层;-d:只显示目录。

linux的目录结构和磁盘分区是分离的,可以自由组合。

/

├── bin    àEssential command binaries

├── boot    àStatic files of the boot loader

├── dev    àDevice files

├── etc    àHost-specific system configuration

├── home    àUser home directories(optional)

├── lib    àEssential shared libraries and kernel modules

├── lib64

├── lost+found

├── media

├── mnt    àMount point for mounting a filesystem temporarily

├── oldboy

├── opt    àAdd-on application software packages

├── proc    à进程信息及内核信息(cpu、硬盘分区、内存信息等)

├── root    àHome directory for the root user(optional)

├── sbin    àEssential system binaries

├── selinux

├── srv

├── sys

├── tmp    àTemporary files

├── usr    àSecondary hierarchy

└── var    àVariable data

cat /proc/meminfo    à内存信息

cat /proc/cpuinfo àcpu信息

cat /proc/mounts     à挂载信息

cat /proc/loadavg à负载(系统繁忙程度)

小结:

1、linux系统的所有目录时一个有层次的倒着的树状目录结构,/根是所有目录的起点。

2、不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备。

/dev/ 设备目录

/etc/ 系统配置即服务配置文件、启动命令的目录

/proc 显示内核及进程信息的虚拟文件系统

/tmp 临时文件目录

/home 普通用户家目录

/root 超级管理员的家目录

/var 变化的目录,一般是日志文件,cache的目录

/usr 用户程序及数据、帮助文件、二进制命令等的目录

/bin、/sbin、/usr/sbin 用户命令的目录

Linux重要目录路径

/etc/sysconfig/network-scripts/ifcfg-eth0:配置网络地址及GW等。

  1. [[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
  2. DEVICE=eth0 #物理设备名,eth1表示第二块网卡
  3. HWADDR=00:0c:29:a6:d7:cb #网卡的MAC地址,48位(克隆后要删除)
  4. TYPE=Ethernet #以太网
  5. UUID=cd11ee91-579f-43be-9074-a14cabe2e0c6 #uuid唯一用户标识(克隆后要删除)
  6. ONBOOT=yes #控制网卡是不是开机启动
  7. NM_CONTROLLED=yes
  8. BOOTPROTO=dhcp #proto值:none,引导时不使用协议;static,静态分配地址;bootp,使用BOOTP协议;dhcp,使用DHCP协议
  9. DNS2=202.106.0.20 #DNS把baidu.com变成baidu服务器IP。DNS域名和IP的解析工具
  10. DNS1=8.8.8.8
  11. USERCTL=no
  12. PEERDNS=yes
  13. IPV6INIT=no

IPADDR=10.0.0.7 #addr是IP地址

NETMASK=255.255.255.0 #子网掩码,划分网络位和主机位10.0.0.0/24

GATEWAY=10.0.0.254 #网关地址,路由器的地址

修改配置生效命令:

  1. [[email protected] ~]# /etc/init.d/network restart #ONBOOT=yes
  2. [[email protected] ~]# ifdown eth0 && ifup eth0 #关闭和启动

ifup:启动

ifdown:关闭

/etc/resolv.conf:DNS管理

  1. [[email protected] ~]# cat /etc/resolv.conf
  2. ; generated by /sbin/dhclient-script
  3. search localdomain
  4. nameserver 8.8.8.8
  5. nameserver 202.106.0.20

小结:

1、客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)。

2、客户端DNS也可以在/etc/resolv.conf里设置。

3、网卡里的设置DNS优先于/etc/resolv.conf。

/etc/hosts:设定用户IP与域名的对应解析表

对应windows的文件C:\Windows\System32\drivers\etc\hosts。

  1. [[email protected] ~]# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.131.128 oldboy66

hosts在企业里的作用:

1、开发、产品、测试等人员,用于通过正式的域名测试产品。

2、服务器之间的调用可以用域名(内部的DNS),方便迁移。

/etc/sysconfig/network:修改机器名及网卡启动,网关等配置。

  1. [[email protected] ~]# cat /etc/sysconfig/network
  2. NETWORKING=yes
  3. HOSTNAME=oldboy66

更改主机名:

1、vi /etc/sysconfig/network

2、hostname 主机名

同时修改。

/etc/fstab:设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区

  1. [[email protected] ~]# df –h #查看磁盘挂载信息
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/sda3 7.1G 1.4G 5.4G 21% /
  4. tmpfs 497M 0 497M 0% /dev/shm
  5. /dev/sda1 190M 27M 153M 15% /boot
  1. [[email protected] ~]# cat /etc/fstab
  2. UUID=e8962baa-4051-4832-b0ee-e27aa74f6374 / ext4 defaults 1 1
  3. UUID=9782b8eb-4b2d-4919-b3b7-14ee46d04ae8 /boot ext4 defaults 1 2
  4. UUID=60b51f07-216b-4e38-9eee-d3de8d897e01 swap swap defaults 0 0
  5. tmpfs /dev/shm tmpfs defaults 0 0 #挂载的设备    挂载点    FS类型    参数    备份    检查
  6. devpts /dev/pts devpts gid=5,mode=620 0 0
  7. sysfs /sys sysfs defaults 0 0
  8. proc /proc proc defaults 0 0
  9. [[email protected] ~]#

fsck:磁盘检查(不要检查好磁盘),卸载的状态

挂载方式:

1、命令挂载

mount -t ext4 -o noexec /dev/sda1 /mnt

2、/etc/fstab

测试手动挂载:

1、创建一个虚拟的块设备。

dd if=/dev/zero of=/dev/sdb1 bs=4906 count=100

2、格式化

mkfs.ext4 /dev/sdb1

3、挂载

mount -t ext4 -o loop,noatime,noexec /dev/sda1 /mnt

4、查看

df -h

第一列挂载的设备可以是设备名或UUID、磁盘标签。

fstab出问题,修复方式:

1、开机提示输入密码修复。

2、救援模式rescue修改/etc/fatab只读状态,mount -o rw,remount /。

/etc/rc.local:用于存放开机自启动程序命令的文件

让一个程序开机启动:

1、chkconfig(/etc/init.d/sshd)。

2、放入/etc/rc.local。

选择建议:/etc/rc.local,工作中把/etc/rc.local作为服务器档案文件,所有程序开机启动放入/etc/rc.local并加注释。

rc.local与fstab区别:rc.local在系统启动完成最后加载。

NFS网络文件系统挂载是,网卡还没启动,就已经加载fstab。(mount -t nfs 10.0.0.7:/data /mnt)

/etc/inittab:设定系统启动时init进程将把系统设置成什么样的runlevel运行级别及加载相关的级别对应启动文件设置

Linux启动过程:

1、开机BIOS自检

2、MBR引导

硬盘0柱面0磁盘1扇区的前446byte。

3、grub引导菜单

cat /etc/grub.conf

4、加载内核kernel

5、启动init进程

ps -ef|grep init

/etc/init.d

/etc/profile:系统全局环境变量永久生效的配置文件

/etc/profile.d:登录后执行的脚本所在地

/etc/motd:登录后显示的字符串

/etc/issue:记录用户登录前显示的系统版本等信息

  1. [[email protected] ~]# cat -n /etc/issue
  2.      1 CentOS release 6.6 (Final)
  3.      2 Kernel \r on an \m

/etc/group:设定用户的组名与相关信息

/etc/passwd:账号信息文件

/etc/shadow:密码信息文件

/etc/gshadow:组密码信息文件

/etc/sudoers:可以执行使用sudo命令的配置文件

visudo -c:检查语法

yum remove tree -y:yum删除(会删除依赖,慎用)

/var/log/messages:系统日志,自动轮询按周(rsyslog)

/var/log/secure:安全日志,SSH连接日志

dmesg:内核打印的错误信息,例如硬件故障

/var/spool/cron/root:定时任务crond配置文件

/proc/mounts:设备挂载信息与df -h类似

时间: 2024-10-16 19:16:38

Linux基础介绍【第三篇】的相关文章

Linux基础介绍【第二篇】

远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端包含的软件主要有openssh和openssl,在Linux系统中可以查询SSH服务端工具的安装情况: [[email protected] ~]# rpm -qa openssh openssl openssl-1.0.1e-30.el6.x86_64 openssh-5.3p1-104.el6.

EnjoyingSoft之Mule ESB基础系列第三篇:Mule message structure - Mule message结构

目录 1. 探索Mule Message结构 2. Mule Message的Payload 3. Mule Message的Property 4. Mule Message的Attachment 5. Mule的Variable 6. 使用Java操作Mule Message Mule ESB是一个使用Java语言编写的开源企业服务总线,企业服务总线英文Enterprise Service Bus,简称ESB.其相关源代码也托管在GitHub上,可以在https://github.com/mu

Linux基础介绍【第八篇】

Linux网络基础 网线 568A 568B 线序:橙白橙 绿白蓝 蓝白绿 棕白棕 交换机.路由器 交换机:DLINK.H3C.CISCO 交换机(Switch)是一种用于电信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的还有电话语音交换机.光纤交换机等. 路由器:CISCO 路由器(Router)是连接因特网中各局域网.广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号. OSI7层网络模型

linux设备驱动第三篇:写一个简单的字符设备驱动

在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: [plain] vie

linux设备驱动第三篇:如何写一个简单的字符设备驱动?

在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: [email prot

linux设备驱动第三篇:如何实现简单的字符设备驱动

在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动 都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: [email pro

Linux基础系列(三)Linux系统文件和目录重要知识

详细解释图: 第一列 Inode详解 第二列 文件类型及权限 第三列 硬链接数 第四五列 属主及所归属得组 第六列 文件或目录的大小 第七八九列 最近修改时间 第十列 文件或目录名字 inode详解 block是用来存储实际数据 inode用来存储文件属性 inode不包含文件名 文件在上一级目录的block里 block小结 磁盘读取数据是按Block为单位读取的. 一个文件可能占用多个Block.每读取一个Block就会消耗一次磁盘I/O. 如果要提升磁盘I/O性能,那么就要尽可能一次性读取

linux设备驱动第三篇:如何实现一个简单的字符设备驱动

在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: ? 1 2 3 4 5

Linux基础之文件管理三兄弟(cp、mv、rm)

我们日常工作中对于文件的操作用到最多的几个我觉得应该是是复制.剪切.移动.重命名.删除这五个.因此今天主要介绍关于上面五个操作在Linux中实现涉及到的三个命令:cp.mv.rm. cp是copy的简写,从名字我们大致就能知道它的作用,它主要是用来复制文件的.虽然这个命令很简单,可是它有很多细节需要我们注意,如果稍有忽略那么命令很有可能无法达到我们想要的结果. 以下信息来自man手册 NAME cp - copy files and directories 单源复制(源文件为文本文件) 其命令格