标签: debian-based

使用Raspbian Linux for ARM(Plate Raspberry Pi)的SD卡有多少生命?

工作人员,这个问题适合任何相信Debian linux的人,更准确地说是Raspbian,这是一个在Raspberry Pi上运行的版本:

因为Raspberry Pi的所有用户都应该知道:操作系统安装在SD卡上.问题是SD卡是闪存,这种类型的存储器仅支持有限数量的写操作.

我想知道Raspbian是否在闲置时写入SD卡.如果发生这种情况,我该怎么禁用?

我找到了这个:

DavidHärdeman在闪存设备上运行Linux的提示

如果您在USB闪存密钥上运行NSLU2,那么您可能需要做很多事情以减少底层闪存设备的磨损(因为它只支持有限数量的写入).

注意:本文档目前描述了Debian etch(4.0),需要更新到Debian squeeze(6.0)和Debian wheezy(7.0).一些提示可能仍然适用,但有些可能不适用.

默认情况下,ext3文件系统每五秒将元数据更改写入磁盘.这可以通过使用commit = N参数挂载根文件系统来增加,该参数告诉内核将写入延迟到每N秒.

内核为每个已读取的文件写入新的atime,为每次读取生成一次写入.可以通过使用noatime选项安装文件系统来禁用此功能.上述两个都可以通过添加例如noatime,commit = 120,...到/ etc/fstab来完成.这也可以通过运行命令在已安装的文件系统上完成:

mount -o remount,noatime,commit = 120 /

系统将每天运行updatedb,这将创建系统上所有文件的数据库,以便与locate命令一起使用.这也会对文件系统造成一些压力,因此您可能希望通过添加来禁用它

退出0

早在/etc/cron.daily/find脚本中.

在记录一些新信息后,syslogd将在默认安装中直接将大量日志文件同步到磁盘.您可能希望更改/etc/syslog.conf,以便每个文件名以 - (减号)开头,这意味着写入不会立即同步(这会增加系统崩溃时某些日志消息丢失的风险).例如,一行如下:

kern.*/var/log/kern.log

将改为:

kern.* - /var/log/kern.log

您也可以通过将它们记录到/ dev/null来完全禁用某些类消息,有关详细信息,请参阅syslog.conf(5).

此外,syslogd喜欢每20分钟写一次 - MARK - 行来记录文件,以显示syslog仍在运行.可以通过更改/ etc/default/syslogd中的SYSLOGD来禁用它,以便它可以读取

SYSLOGD =" - m 0"

进行任何更改后,需要通过运行重新启动syslogd

/etc/init.d/syslogd restart

如果您在闪存设备上有交换分区或交换文件,您可能希望每隔一段时间将其移动到磁盘的不同部分,以确保磁盘的不同部分受到它可以生成的频繁写入的影响.对于交换文件,可以通过在删除旧交换文件之前创建新的交换文件来完成.

如果您在闪存设备上存储了交换分区或交换文件,则可以通过将/ proc/sys/vm/swappiness设置为零来确保尽可能少地使用它.

内核还有一个名为laptop_mode的设置,这使得它延迟写入磁盘(最初的目的是允许笔记本电脑磁盘在不使用时降速,因此名称)./ proc/sys/vm /下的许多文件控制它的工作原理:

/ proc/sys/vm/laptop_mode:读取后多少秒应该写出已更改的文件(这是基于读取将导致磁盘再次旋转的假设).

/ proc/sys/vm/dirty_writeback_centisecs:内核检查是否有"脏"(已更改)数据写入磁盘的频率(以厘秒为单位).

/ proc/sys/vm/dirty_expire_centisecs:在内核认为数据足够大以便写入磁盘之前,应该有多旧的"脏"数据.一般来说,将其设置为与上面的dirty_writeback_centisecs相同的值是个好主意.

/ proc/sys/vm/dirty_ratio:在生成数据的进程被强制写入之前,用于存储脏数据的最大内存量(以百分比表示).将此值设置为高值不应该是一个问题,因为如果系统内存不足,也会发生写入.

/ proc/sys/vm/dirty_background_ratio:允许停止向磁盘写入脏数据的较低内存量(以百分比表示).这应该比上面的dirty_ratio低很多,以允许内核一次写出脏数据块.

可以使用自定义init脚本(例如此示例脚本)来调整所有上述内核参数.将其存储到例如/etc/init.d/kernel-params,使其可执行

chmod a + x /etc/init.d/kernel-params

并确保它是通过运行执行的

update-rc.d kernel-params默认值

注意:大多数这些设置通过增加内存使用量来减少写入磁盘的次数.这增加了内存不足情况的风险(这可能会触发内核中可怕的OOM杀手).甚至在有可用空闲内存时也会发生这种情况(例如,当内核需要分配多个连续页面并且只有碎片化的可用页面可用时).

与任何调整一样,建议您密切关注可用内存量并调整调整(例如,通过使用不太激进的缓存并增加swappiness),具体取决于您的工作负载. …

lifetime debian-based raspberry-pi raspbian

5
推荐指数
1
解决办法
3622
查看次数

MySQL C 连接器:无法创建 TCP/IP 套接字 (24)

我正在尝试在 Debian 中使用 MySQL C 连接器开发一个程序。

当程序尝试使用以下方法进行连接时:

if (!mysql_real_connect(connection, "127.0.0.1", "dbuser", "dbpassword", "dbname", 3306, NULL, 0)) {
  printf("Connection error : %s\n", mysql_error(connection));
  exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我刚回来“无法创建 TCP/IP 套接字 (24)”,如果我尝试:

 if (!mysql_real_connect(connection, "localhost", "dbuser", "dbpassword", "dbname", 0, NULL, 0)) {
  printf("Connection error : %s\n", mysql_error(connection));
  exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我回复“无法创建 Unix 套接字 (24)

我在谷歌上搜索过,并在这里查看,人们似乎指出“打开的文件太多”。现在,我不确定这对连接到底意味着什么,因为我在与 MySQL 服务器连接良好的同一主机上的网络服务器上运行 php,并且(用于调试)创建了一个 java 应用程序来连接和发送返回版本号,这也有效。所以我不认为服务器连接太多。

有关打开文件的 ulimit 设置:(-n) 1024

我不明白为什么那些可以连接 find 到本地主机服务器,但 c 连接器不能。

有人可以帮忙吗?

c mysql sockets debian-based

5
推荐指数
0
解决办法
1178
查看次数

LIRC部分读取8个字节

我尝试使用我的Raspberry Pi 3和最新的Raspbian创建我自己的通用遥控器.在构建了小接收器和发射器(我遵循的教程)并将所有内容连接起来后,我在尝试接收IR时收到了此消息.

pi@raspberrypi:~ $ sudo modprobe lirc_rpi
pi@raspberrypi:~ $ sudo kill $(pidof lircd)
pi@raspberrypi:~ $ mode2 -d /dev/lirc0
Using driver devinput on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
Partial read 8 bytes on /dev/lirc0pi@raspberrypi:~ $
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

debian-based lirc raspberry-pi3

4
推荐指数
1
解决办法
2923
查看次数

Jar文件的java

我创建了一个java应用程序并将其打包到Windows平台上的jar文件中.现在我想在Debian Linux上部署该jar文件.

  1. 相同的jar文件是否适用于Debian Linux?

  2. 在Windows中用于从命令提示符执行jar文件的命令是否与Debain Linux相同?

java -jvm "MyJar.jar"
Run Code Online (Sandbox Code Playgroud)

以上命令是否适用于Debian Linux?

java debian debian-based

3
推荐指数
2
解决办法
5617
查看次数

无法更改Linux中的文件权限

这似乎是一个非常基本的问题,但我无法更改 Linux 中的文件权限。

我是root用户,如果我在已安装的linux的文件系统中复制相同的文件,我可以更改文件权限。我无法更改保留在其他分区上的文件/文件夹的权限。

请给我一个术语,至少告诉我如何开始调试,我也没有看到任何错误。没有设置粘性位。请提供我可以遵循的步骤来调试此问题,以帮助我。

这是 df -h 的输出

Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   46G   22G   22G  50% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   393M  1.9M  391M   1% /run
/dev/disk/by-uuid/49c0f59c-9bb3-4755-8c1f-06da6159865e   46G   22G   22G  50% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   786M  944K  785M   1% /run/shm
/dev/sda2                                                46G   43G  1.3G  98% /home
/dev/sda6                                               278G  122G  157G  44% /media/056AFEAB51156F3F___
/dev/sda3                                                92G   16G   72G  18% /media/3a7cb05d-b822-4f3e-a330-da91013b605c_
Run Code Online (Sandbox Code Playgroud)

ls -al 的输出

drwx------ 1 prasenjit prasenjit     0 Oct 21 …
Run Code Online (Sandbox Code Playgroud)

linux debian-based

3
推荐指数
1
解决办法
8827
查看次数

链接汇编程序:错误"未定义引用`printf'"

我正在尝试在x64 Debian上编译这个x86汇编代码:

BITS 32

%include    'training.s' 

global main
extern  exit    

; ===============================================
section .text

main:
    ; The program begins here:

    call    read_hex    
    mov     edx,eax
    call    read_hex    
    add     eax,edx
    add     eax,eax
    inc     eax         

    call    print_eax   

    ; Exit the process:
    push    0
    call    exit
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

~$nasm -f elf -g 0_strange_calc.asm && ld -o 0_strange_calc 0_strange_calc.o
    ld: i386 architecture of input file `0_strange_calc.o' is incompatible with i386:x86-64 output
    ld: warning: cannot find entry symbol _start; defaulting to 00000000004000b0
    0_strange_calc.o:training.s:25: undefined reference …
Run Code Online (Sandbox Code Playgroud)

x86 assembly 32-bit nasm debian-based

3
推荐指数
1
解决办法
2万
查看次数

在Ubuntu 18.04 LTS上安装特定版本的Ansible(2.3.1.0)

我想在Ubuntu 18.04上安装Ansible 2.3.1.0。

当我运行时apt-get install ansible,它将安装版本2.5.3。

以下是的输出apt-cache policy ansible。之后,我删除了安装。

ansible:
  Installed: (none)
  Candidate: 2.5.3-1ppa~bionic
  Version table:
     2.5.3-1ppa~bionic 500
        500 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main amd64 Packages
        500 http://ppa.launchpad.net/ansible/ansible/ubuntu bionic/main i386 Packages
     2.5.1+dfsg-1 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu bionic/universe i386 Packages
Run Code Online (Sandbox Code Playgroud)

ubuntu packaging debian-based

3
推荐指数
2
解决办法
1万
查看次数

Xubuntu上的Debian软件包,安装debchange/dch?

在Xubuntu上创建debian软件包从哪里安装debchange/dch?

package debian-based deb

2
推荐指数
2
解决办法
5738
查看次数

我应该覆盖 init 系统的 debhelper 使用吗?

我正在尝试使用 systemd 脚本构建 debian 软件包,但我并不真正理解最好的方法。

我的第一个问题是,我应该使用该--with=systemd选项(并覆盖dh_systemd_enableand )还是与该选项一起dh_systemd_start使用就足够了?因为两者似乎都在做同样的事情。dh_installinit--name

packaging debian-based debhelper

2
推荐指数
1
解决办法
2137
查看次数

如何在linux上安装最新的git core?

我正在尝试在 linux (debian/ubuntu) 上安装最新的 git

我试过

sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
Run Code Online (Sandbox Code Playgroud)

它让我

git --version
git version 2.7.4
Run Code Online (Sandbox Code Playgroud)

但根据这篇文章:/sf/answers/26071/​​93198 存在更新的版本。

https://github.com/git/git/blob/master/RelNotes

git version-control ubuntu apt debian-based

1
推荐指数
1
解决办法
4308
查看次数