Linux系统内存使用经验

2024-07-13

Linux系统内存使用经验(精选9篇)

1.Linux系统内存使用经验 篇一

内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。

一、内存使用情况监测

(1)实时监控内存使用情况

在命令行使用“Free”命令可以监控内存使用情况

#free total used free shared buffers cachedMem: 256024 192284 63740 0 10676 101004-/+ buffers/cache: 80604 175420Swap: 522072 0 522072

上面给出了一个256兆的RAM和512兆交换空间的系统情况。第三行输出(Mem:)显示物理内存。total列不显示核心使用的物理内存(通常大约1MB)。used列显示被使用的内存总额(第二行不计缓冲)。 free列显示全部没使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对对换空间,显示的信息类似上面。如果这行为全0,那么没使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用Dh参数以字节为单位显示内存使用情况,或者可以使用Dm参数以兆字节为单位显示内存使用情况。还可以通过Ds参数使用命令来不间断地监视内存使用情况:

#free ?Cb ?Cs2

这个命令将会在终端窗口中连续不断地报告内存的使用情况,每2秒钟更新一次。

(2)组合watch?c free命令用来实时监控内存使用情况:

#watch -n 2 -d freeEvery 2.0s: free Fri Jul 6 06:06:12 total used free shared buffers cachedMem: 233356 218616 14740 0 5560 64784-/+ buffers/cache: 148272 85084Swap: 622584 6656 615928

watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据,

因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率。可以使用 -n选项,控制执行的频率;也可以利用 -d选项,让命令将每次不同的地方显示出来。Watch命令会一直执行,直到您按下 - 为止。

二、虚拟内存的概念

(1)Linux虚拟内存实现机制

Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制。

首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求;如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。 如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址。

(2)虚拟内存容量设定

也许有人告诉你,应该分配2倍于物理内存的虚拟内存,但这是个不固定的规律。如果你的物理保存比较小,可以这样设定。如果你有1G物理内存或更多的话,可以缩小一下虚拟内存。Linux会把大量的内存用做Cache的,但在资源紧张时回收回.。你只要看到swap为0或者很小就可以放心了,因为内存放着不用才是最大的浪费。

三、使甩vmstat命令监视虚拟内存使用情况

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat 5 5(表示在5秒时间内进行5次采样)命令测试。将得到一个数据汇总它可以反映真正的系统情况。

#vmstat 5 5procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2 0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0 0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0 1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0 1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0

vmstat命令输出分成六个部分:

(1)进程procs:

r:在运行队列中等待的进程数 。

b:在等待io的进程数 。

(2)内存memoy:

swpd:现时可用的交换内存(单位KB)。

free:空闲的内存(单位KB)。

buff: 缓冲去中的内存数(单位:KB)。

cache:被用来做为高速缓存的内存数(单位:KB)。

(3) swap交换页面

si: 从磁盘交换到内存的交换页数量,单位:KB/秒。

so: 从内存交换到磁盘的交换页数量,单位:KB/秒。

(4) io块设备:

bi: 发送到块设备的块数,单位:块/秒。

bo: 从块设备接收到的块数,单位:块/秒。

(5)system系统:

in: 每秒的中断数,包括时钟中断。

cs: 每秒的环境(上下文)切换次数。

(6)cpu中央处理器:

cs:用户进程使用的时间 。以百分比表示。

sy:系统进程使用的时间。 以百分比表示。

id:中央处理器的空闲时间 。以百分比表示。

如果 r经常大于 4 ,且id经常小于40,表示中央处理器的负荷很重。 如果bi,bo 长期不等于0,表示物理内存容量太小。

2.Linux下如何使用网银 篇二

作为一个Linux的爱好者,经过数次决心后放弃了双系统,只在自己的笔记本电脑里安装了Linux,坚持数月后发现网银使用是个大问题。不知能否有好的解决方案?

解题思路

对于这一问题,有一个较为可行的方法,就是通过虚拟机来解决。比较知名的虚拟机软件Virtualbox提供有Linux版本,通过它可以在Linux上面使用Windows,从而也就解决了网银使用的问题。

解题方法

这里以在Linux上安装Windows 7为例讲解。

软硬件操作环境如下:

硬件:HP6470B笔记本;CPUi5-3340M;内存16GB(2*4GB)

软件:Linux Mint 17.3 “Rosa”;Virtualbox 5.0.18;Windows 7 Pro 32

安装过程就不一一描述了,在用Virtualbox安装Windows 7时说明几点。

1.安装完Virtualbox后需安装增强包,就是在Virtualbox官网下载的页面上找到“VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack All supported platforms”。下载后双击应会自动安装,如没有请先启动Virtualbox,然后在“管理→全局设定→扩展”里安装。

2.请用原版的Windows 7安装盘,而不要用Ghost等集成的安装盘。

3.用Virtual建虚拟机时注意版本的一致,请在系统中勾选以下的选项(扩展特性和硬件虚拟),这样你的虚拟机才能增加CPU的个数,以达到较好的运行环境(图1、图2、图3)。我的虚拟机设置了两个CPU、4GB内存,运行感觉还是比较流畅的。

4.在虚拟机中启动Windows 7,然后在主菜单中选设备,安装增强功能,这样在Windows 7中会出现一虚拟光驱,包含了增加功能的软件,双击自动安装就可以了。

5.用户权限分配(非常重要,本步骤不做虚拟机不能管理USB设备),请在Linux系统中将当前用户加入到Vboxusers组中,一般在“系统→用户和组→管理组”中找到Vboxusers,在属性中勾选当前用户即可,本步骤需重启系统才生效。

6.设置USB设备,将U盾插上电脑,在“设置→USB设置”中选中U盾(图4)。

进入Windows 7安装U盾的驱动后就应该可以使用U盾了,如未识别,只需将U盾重新拔插一次即可。

笔者用的是建行的个人网银盾,对企业网银同样有效,只要安装企业网银的驱动管理组件就行了。

题号:20161401

难度:4分

挑战题描述:

最近和一个朋友闹翻,虽然现实中已经断绝了各种来往联系,但是以前在使用各种网络工具时都添加过好友,因此仍然会不断受到其骚扰。请问有什么办法可以实现在微信、支付宝、QQ等上面,对特定的人进行彻底屏蔽?

题号:20161402

难度:4分

挑战题描述:

我最近买了Windows 10平板,现在应用我都是从应用商店下载,可是家里的网络连接商店太慢了,而且经常连接不上。请问有没有办法离线下载商店应用,同时实现离线安装商店应用?

题号:20161403

难度:3分

挑战题描述:

国内有不少网盘停止提供服务,有些网盘虽然还能用,但是同步功能则关闭了,这给我的工作带来很大的不便。还好我发现Windows 10集成的OneDrive功能可以解决我的同步需求,但是还是有一点不太放心,假设别人用我的账号登录,会不会将我OneDrive上的资料都同步走?能否给OneDrive文件夹进行独立加密,这样让数据更安全一点?至于那些把文件压缩成ZIP包加密码的方法就不要提了,因为这用起来太不方便了。

题号:20161404

难度:3分

挑战题描述:

我有一些英文的TXT、PDF文本文件,想要把它们全文翻译出来,但似乎没有这种将文本文件直接翻译过来的软件。虽然可以粘贴到Word中进行全文翻译,但Word实际上还是调用的网页翻译功能,而且对字数是有限制的(大部分在线翻译都是这样),对超长的文本不能一次翻译过来,非常麻烦。请问有没有更好的解决方法?

题号:20161405

难度:3分

挑战题描述:

现在网上的电子地图,如百度地图、腾讯地图等截图时最多只能一个屏幕,有没有方法截图时可以超出一个屏幕呢?(读者|jack7337)

题号:20161406

难度:5分

挑战题描述:

3.Linux系统内存使用经验 篇三

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能

lsof -Pnl +M -i4

lsof -Pnl +M -i6

ls -i :80

补充:实用命令

代码如下复制代码

lsof `which httpd` //那个进程在使用apache的可执行文件

lsof /etc/passwd //那个进程在占用/etc/passwd

lsof /dev/hda6 //那个进程在占用hda6

lsof /dev/cdrom //那个进程在占用光驱

lsof -c sendmail //查看sendmail进程的文件使用情况

lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn

lsof -p 30297 //显示那些文件被pid为30297的进程打开

lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列

lsof -u1000 //查看uid是100的用户的进程的文件使用情况

lsof -utony //查看用户tony的进程的文件使用情况

lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)

lsof -i //显示所有打开的端口

lsof -i:80 //显示所有打开80端口的进程

lsof -i -U //显示所有打开的端口和UNIX domain文件

lsof -i UDP@[url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接

lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)

lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

lsof命令参数解释

1) -P :这个选项约束着网络文件的端口号到端口名称的转换,

约束转换可以使lsof运行得更快一些。在端口名称的查找不能奏效时,这是很有用的。

2) -n : 这个选项约束着网络文件的端口号到主机名称的转换。约束转换可以使lsof的运行更快一些。在主机名称的查找不能奏效时,它非常有用。

3) -l :这个选项约束着用户ID号到登录名的转换。在登录名的查找不正确或很慢时,这个选项就很有用。

4) +M :此选项支持本地TCP和UDP端口映射程序的注册报告。

5) -i4 :仅列示IPv4协议下的端口。

4.Linux系统内存使用经验 篇四

在linux下,使用fdisk对硬盘分区:先删除原有分区,然后创建新的分区

1) 删除分区

代码如下复制代码

[root@standby root]# fdisk /dev/sdc

The number of cylinders for this disk is set to 4425.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m

Command action

atoggle a bootable flag

bedit bsd disklabel

ctoggle the dos compatibility flag

ddelete a partition

llist known partition types

mprint this menu

nadd a new partition

ocreate a new empty DOS partition table

pprint the partition table

qquit without saving changes

screate a new empty Sun disklabel

tchange a partition’s system id

uchange display/entry units

vverify the partition table

wwrite table to disk and exit

xextra functionality (experts only)

Command (m for help): p

Disk /dev/sdc: 36.4 GB, 36401479680 bytes

255 heads, 63 sectors/track, 4425 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device BootStartEndBlocksIdSystem

/dev/sdc11250093+83Linux

/dev/sdc2251500200812583Linux

/dev/sdc3501750200812583Linux

/dev/sdc4751442529519437+5Extended

/dev/sdc575110002008093+83Linux

/dev/sdc6100144252751128183Linux

Command (m for help): d

Partition number (1-6): 1

Command (m for help): d

Partition number (1-6): 2

Command (m for help): d

Partition number (1-6): 3

Command (m for help): d

Partition number (1-6): 4

Command (m for help): p

Disk /dev/sdc: 36.4 GB, 36401479680 bytes

255 heads, 63 sectors/track, 4425 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device BootStartEndBlocksIdSystem

Command (m for help): w

The partition table has been altered!

Calling ioctl to re-read partition table.

Syncing disks.

2) 创建分区

代码如下复制代码

[root@standby root]# fdisk /dev/sdc

The number of cylinders for this disk is set to 4425.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdc: 36.4 GB, 36401479680 bytes

255 heads, 63 sectors/track, 4425 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device BootStartEndBlocksIdSystem

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-4425, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-4425, default 4425): +500

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

p

Partition number (1-4): 2

First cylinder (502-4425, default 502):

Using default value 502

Last cylinder or +size or +sizeM or +sizeK (502-4425, default 4425): +2048M

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

p

Partition number (1-4): 3

First cylinder (752-4425, default 752):

Using default value 752

Last cylinder or +size or +sizeM or +sizeK (752-4425, default 4425): +2048000K

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

p

Selected partition 4

First cylinder (1002-4425, default 1002):

Using default value 1002

Last cylinder or +size or +sizeM or +sizeK (1002-4425, default 4425): +2048M

Command (m for help): n

You must delete some partition and add an extended partition first

Command (m for help): d

Partition number (1-4): 4

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

e

Selected partition 4

First cylinder (1002-4425, default 1002):

Using default value 1002

Last cylinder or +size or +sizeM or +sizeK (1002-4425, default 4425):

Using default value 4425

Command (m for help): n

First cylinder (1002-4425, default 1002):

Using default value 1002

Last cylinder or +size or +sizeM or +sizeK (1002-4425, default 4425): +2048M

Command (m for help): n

First cylinder (1252-4425, default 1252):

Using default value 1252

Last cylinder or +size or +sizeM or +sizeK (1252-4425, default 4425): +2048M

Command (m for help): n

First cylinder (1502-4425, default 1502):

Using default value 1502

Last cylinder or +size or +sizeM or +sizeK (1502-4425, default 4425):

Using default value 4425

Command (m for help): n

No free sectors available

Command (m for help): p

Disk /dev/sdc: 36.4 GB, 36401479680 bytes

255 heads, 63 sectors/track, 4425 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device BootStartEndBlocksIdSystem

/dev/sdc11501402425183Linux

/dev/sdc2502751200812583Linux

/dev/sdc37521001200812583Linux

/dev/sdc410024425275032805Extended

/dev/sdc5100212512008093+83Linux

/dev/sdc6125215012008093+83Linux

/dev/sdc71502442523486998+83Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

分区建好后有两种方法:使用文件系统,使用裸设备

1) 使用文件系统

创建文件系统

代码如下复制代码

[root@standby root]# mkdir /test

[root@standby root]# mkfs/dev/sdc3

mke2fs 1.32 (09-Nov-)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

251392 inodes, 502031 blocks

25101 blocks (5.00%) reserved for the super user

First data block=0

16 block groups

32768 blocks per group, 32768 fragments per group

15712 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or

180 days, whichever comes first.Use tune2fs -c or -i to override.

挂接文件系统

代码如下复制代码[root@standby root]# mount /dev/sdc3 /test

改权限

代码如下复制代码

[root@standby root]# ls -ltr/test

total 16

drwx——2 rootroot16384 Jun 20 21:51 lost+found

[root@standby root]# chown-Roracle.dba/test

[root@standby root]# chmod 755 /test

[root@standby root]# ls -ltr/test

total 16

drwx——2 oracledba16384 Jun 20 21:51 lost+found

创建表空间

代码如下复制代码

SQL>create tablespace chen

2datafile ‘/test/chen.dbf’ size 10M;

Tablespace created.

向表空间增加数据文件

代码如下复制代码

SQL>alter tablespace chen

2add datafile ‘/test/chen2.dbf’ size 10M;

Tablespace altered.

可以看到表空间chen的大小是20m了

代码如下复制代码

SQL>select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size

2from dba_tablespaces t, dba_data_files d

3where t.tablespace_name = d.tablespace_name

4group by t.tablespace_name;

TABLESPACE_NAMETS_SIZE

———————————————————— ———-

CHEN20

EYGLE10

SYSTEM250

UNDOTBS1200

USERS25

2) 使用裸设备

可以看到已有的绑定

代码如下复制代码[root@standby root]# raw -qa

/dev/raw/raw1:bound to major 8, minor 17

/dev/raw/raw2:bound to major 8, minor 18

/dev/raw/raw3:bound to major 8, minor 19

/dev/raw/raw4:bound to major 8, minor 20

/dev/raw/raw5:bound to major 8, minor 34

绑定裸设备

代码如下复制代码

[root@standby test]# raw /dev/raw/raw6 /dev/sdc1

/dev/raw/raw6:bound to major 8, minor 33

ditional information: 1

改权限

代码如下复制代码[root@standby root]# chown -R oracle.dba /dev/raw

[root@standby root]# chmod 755 /dev/raw

创建表空间

代码如下复制代码

SQL>create tablespace jin

2datafile ‘/dev/raw/raw6′ size 10M;

Tablespace created

指令:fdisk

用途:观察硬盘之实体使用情形与分割硬盘用,

使用方法:

一、在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形。

二、在 console 上输入 fdisk /dev/sda,可进入分割硬盘模式。

1. 输入 m 显示所有命令列示。

2. 输入 p 显示硬盘分割情形。

3. 输入 a 设定硬盘启动区。

4. 输入 n 设定新的硬盘分割区。

4.1. 输入 e 硬盘为[延伸]分割区(extend)。

4.2. 输入 p 硬盘为[主要]分割区(primary)。

5. 输入 t 改变硬盘分割区属性。

6. 输入 d 删除硬盘分割区属性。

7. 输入 q 结束不存入硬盘分割区属性。

5.Linux系统下如何使用U盘? 篇五

二、在mnt目录下先建立一个u的目录,

三、然后命令提示符#后输入:mount -t vfat /dev/sda1 /mnt/u。

四、卸载时用umount /mnt/u。

6.Linux系统内存使用经验 篇六

它基于ncurses的用户界面也会把使用者从命令行选项的梦靥中拯救出来。

功能

一个用于显示通过网络的IP流量信息的IP流量监控器,包括TCP标识信息、包和字节统计、ICMP详情、OSPF包类型

显示IP、TCP、UDP、ICMP、非IP和其它IP包计数、IP校验和错误、接口活动、包大小计数的综合详细的接口统计数据

一个用于计数常用TCP和UDP应用端口的流入和流出包的TCP和UDP服务监控器

一个用于发现活动主机和显示这些活动主机的数据活动的局域网统计模块

TCP、UDP和其它协议的显示过滤器,允许你查看你做感兴趣的流量

日志记录

支持以太网、FDDI、ISDN、SLIP、PPP和回环接口类型

利用Linux内核内建的原生套接口界面,可以用于大范围支持的网卡

全屏、菜单驱动操作

要安装

Ubuntu及其衍生版

代码如下:

sudo apt-get install iptraf

Arch Linux及其衍生版

代码如下:

sudo pacman -S iptra

Fedora及其衍生版

代码如下:

sudo yum install iptraf

用法

如果iptraf命令不带任何命令行选项执行,该程序就会以交互模式显现,可以通过主菜单获得各种各样的工具,

7.Linux系统内存使用经验 篇七

在Linux系统中使用cp命令对文件夹或者目录进行复制操作时,有时候会出现cp:omitting directiory的错误提示。这是怎么回事呢,下面简单来解释一下,并给出解决方法。

问题图:cp:omitting directiory。 如: cp /TEST/test1 /TEST/test2.

这是因为test1目录下还有目录,不能直接进行拷贝,

我们先找下cp 的命令帮助,输入cp --h .

其中一个-r,能解决这个问题。

解决方法

1、在cp命令后,加一个选项 -r .

cp -r /TEST/test1 /TEST/test2.

2、这样就可以成功的解决了。

8.Linux系统内存使用经验 篇八

1、RSLinx组态驱动;

2、RSNetWorx组态ControlNet网络;

3、RSLogix5000进行I/O组态和编程。

以上2、3也可以顺序相反,但效率会差一些。

如何设置ControlNet网络参数

************************************* 准备工作(2项):

1、硬件设定全部ControlNet模块的节点号(Node),检查通电;

2、在RSLinx组态一个驱动,并能在Who窗口中浏览到ControlNet网络。

启动RSNetWorx,设置ControlNet网络:

1、从菜单中执行New:新建一个ControlNet组态。

2、执行Online(在线):在Who Active窗口中选择ControlNet网络并在线连接,自动读取并显示ControlNet网络模块配置情况。

3、执行Edit Enable:在ControlNet属性窗口中设置网络参数(刷新时间、预定/未预定节点、A/B通道等),保存成.xc文件(作用见后述)。

在线保存.xc文件,随后会自动执行4(Download),以保证当前RSNetWorx窗口组态与ControlNet参数一致。

4、执行Download:下载网络参数及Keeper到ControlNet网络模块。

此过程说明Keeper是根据网络参数自动产生的,网络参数及Keeper保存到ControlNet网络模块而不是CPU模块中。

5、可查看Keeper状态,ControlNet网络运行OK了。

如何在线检查I/O组态连接正常

************************************* 首先说明一下CPU模块I/O指示灯的信息:

Off(灭)——没有I/O组态;

Off/On(闪烁)——有I/O组态模块连接错误;

On(常亮)——I/O组态模块连接正常。

”I/O组态“图标旁边显示注意符号(三角内加!)时,一般是I/O模块连接错误,说明如下:

错误代码(16#0317)—— Connection Request Error;

错误原因 —— Connection not Scheduled;

解决办法 —— 运行RSNetWorx进行预定(Schedule)。

1756-CNB(R)模块的属性页”RSNetworx“,用于绑定ControlNet组态参数,运行RSNetWorx进行连接预定(Schedule):

1)选择已组态的ControlNet文件(.xc);

//绑定ControlNet组态参数

2)选择单选项

View and edit the ControlNet network

//此项使运行RSNetWorx并编辑参数,需人工预定

Schedule the ControlNet network

//此项使运行RSNetWorx直接预定

3)点击单选项旁边的图标按钮,运行RSNetWorx完成预定(以所指定的.xc组态数据、单选项进行)。

技巧:

在”I/O组态“时,预先绑定1756-CNB(R)模块属性页的.xc文件,再下载PLC项目,就能一次性I/O模块连接成功。

9.Linux系统内存使用经验 篇九

今天晚上:19:30分,这个困扰了我好久的问题终于解决,其中的原理也终于弄清楚了,总之是利用sudo来赋予Apache的用户root的执行权限,下面记录一下:

利用php利用root权限执行shell脚本必须进行以下几个步骤:(所有步骤都是我亲自实验,若有不妥可指出,谢谢!)

1. 确定一下你的Apache的执行用户是谁。注:不一定就是nobody,我自行安装的httpd,我的Apache的用户就是daemon

2. 利用visudo为你的Apache执行用户赋予root执行权限,当然还有设置无密码。注:为了安全起见,这里最好是新建一个用户,让他作为Apache的执行用户即可(修改httpd.conf文件,后面我会指出)

3. 这步就简单了,编写你的脚本,利用php的exec,system...函数来执行。

接下来就是详细的实现过程:

1. 查看一下你的Apache的执行用户是谁: lsof -i:80        运行之后的结果为:

从图中我们可以清楚的看到,httpd(也就是Apache)的执行用户为:exec_shell(注:这是我本机上改过之后的用户,只是用来说明一下,你的肯定不是这个!)

确定了你的Linux上Apache的执行者是谁,下面为了安全起见,新建一个用户将Apache的执行用户修改为我们新建的用户。

2. 新建Apache的执行用户

useradd your_exec_user 我们知道创建用户的时候都会默认创建一个用用户名同样的用户组,也就是说现在我们也有一个your_exec_user的用户组

下面我们修改一下Apache的配置文件,使它的执行用户改为我们刚才新建的这个用户your_exec_user :

vi /home/houqingdong/httpd-exe/config/httpd.conf(这个是你的Apache所在的目录位置)

找到下面的地方,修改为你新建的用户:your_exec_user

重新启动Apache:  /home/houqingdong/httpd-exe/bin/apachect1 restart             -------------> 重启完之后你可以利用:lsof -i:80 查看一下。

3. 执行visudo(或者是 vi /etc/sudoers) , 为your_exec_user赋予root权限,并且不需要密码,还有一步重要的修改(我被困扰的就是这个地方)

visudo   找到这个地方,添加your_exec_user,并且设置无需密码

我之前的时候,做完这里就去执行php脚本去了,结果一直创建不成功,而且很郁闷的是我切换到your_exec_user用户下直接执行是可以执行成功的,

后来,查看了一下Apache的日志文件,发现:

这里明显看出,在执行sudo的时候说必须要有一个tty去运行sudo , 知道问题出在哪里问题就好解决了: vi /etc/sudoers  将下面的这句注释掉:

这是因为默认的情况下,执行sudo需要一个终端,这里注释掉就可以了。接下来,写你的shell脚本和php命令吧

4. 这里贴一下我写的很简单的一个脚本,就是利用在php端传来的$directory和$name,在该目录下创建一个$name的目录

#!/bin/bash#Program# This program will execute mkdir: cd $directory ; mkdir $namePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHcd $1if [ ! -d $2 ]; then mkdir $2else echo “Already exist...” exit 1fi

功能很简单,就是进入到$directory  判断要创建的目录名是否存在, 然后创建该目录 。

构造的php执行函数:(部分)

if(0==“dir”){ $make_dir_command=“/usr/bin/sudo /home/houqingdong/myshell/mkdir.sh /$directory/ $name” ; echo $make_dir_command; exec($make_dir_command,$output,$return); if($return == 0){echo “”; }else{echo “”; }

这里顺带提一句:构造的命令里面最好都使用绝对路径。

5. 在网页端的执行结果:

提交之后,要过几秒中才会弹出执行结果的提示信息:

执行成功,在我们的/home/目录下:

上一篇:红尘过客散文下一篇:学习贯彻十八大四中全会精神心得体会