Articles of shell

在crontab中的shell脚本

我可以像预期的那样从命令行运行下面的shell脚本: /bin/sh -xv /home/shantanu/backup_transfer.sh 但是当我把它设置在一个cron中,它不能正确执行。 有2个命令。 ssh -t [email protected]“sudo ls”和sudo rsync -avze到另一台服务器。 为什么在命令提示符下运行成功的shell脚本会失败? $ which sh /bin/sh 我使用正确的环境吗? 更新: Error for the first ssh -t command: Pseudo-terminal will not be allocated because stdin is not a terminal. sudo: sorry, you must have a tty to run sudo Error for the second sudo rsync command: sudo: […]

mkdir:无法创build目录.. ../abc/2011-11-23:没有这样的文件或目录

我有一个sftp脚本下载档案,解压缩,然后根据date重命名文件,并将其移动到相应的文件夹。 我不得不将脚本从USB驱动器移到单独的服务器上。 当我运行脚本运行后,它提取文件,但移动文件时,它给出了以下错误: mkdir: cannot create directory `../abc/2011-11-23': No such file or directory 任何帮助将不胜感激。 谢谢

AIX 5.3的哪个版本的ksh?

我正在为客户端编写一个Korn shell脚本,他将在AIX 5.3上使用它。 为了testing,我使用的版本是93u-1 Debian Wheezy。 这与我在AIX上find的版本是否一样?

MySql的information_schema错误 – locking表

我已经写了一个快速的shell脚本来取得MySql数据库的每个备份&这很好。 我为所有的mysql服务器工具使用相同的脚本,我已经安装在Ubuntu 10.04服务器上。 现在问题是运行shell脚本时,我得到一个错误,如下所示 mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES 我已经授予了information_schema数据库的权限,但上述错误仍然存​​在。 任何人都可以帮我解决这个问题。 让我知道是否需要在shell脚本中进行任何更改。 简单的shell脚本给我所有的朋友 #!/bin/bash MyUser='root' # Username d=`date +%b_%d_%Y_%H_%M` m="/var/backups/bugzilla_backup/Bugzilla_Dump_$d" mkdir $m #Get List of Databases /usr/bin/mysql -u $MyUser -Bse 'show databases' > /usr/local/bin/dbname # Backup listed Databases while read l; do /usr/bin/mysqldump $l […]

将用户和邮箱从Postfix / Maildir迁移到Postfix和Mysql后端

所以我有60左右的用户在openbsd上手动滚动postfix安装,我想将他们的邮箱移动到运行iRedMail的新邮件服务器(postfix,vmail / mysql后端) 有谁知道这样做的好方法? 最好是一个脚本,我可以运行,以保持同步MXlogging更新用户邮箱? 我认为一种方式(虽然我没有他们所有的密码!)将有一个命令行imap客户端模拟用户复制自己的邮件,但我相信必须有一个shell / php脚本来迁移用户? 任何人有任何明智的想法?

如何search主目录中的目录?

我想查找主目录中的所有点目录 find ~/ -name .* -Olevel 1 但它不能工作

cronjob中的括号会导致错误

我想运行下面的cronjob,我得到以下错误: /bin/sh: -c: line 0: syntax error near unexpected token `)' 对于该行: mysqldump –opt -Q -h localhost –user=my_username –password=pass)word db_name | gzip -v9 – > db_backup.sql.gz 如何正确运行这个cronjob来防止密码中的字符出现问题?

守护进程在shellclosures时退出

我有一个脚本启动一个守护进程,然后睡20秒。 如果我在SLES11 SP1或RHEL6上运行脚本,那么在脚本退出后,进程仍在运行。 如果我在SLES11 SP3或RHEL6.3上运行该脚本,那么脚本退出后,该进程不再运行。 整个20秒的睡眠过程继续运行,并在进程退出时死亡。 该脚本是通过expect运行的,所以脚本的整个shell会随着进程而退出。 显然,如果这不是一个守护进程,它开始我不会感到惊讶。 另外,我怀疑问题不是操作系统版本,而是我们设置新服务器的方式不同(不知道这些差异是什么,而旧服务器是在几年前build立的)。 在20秒的过程中运行,如果我做一个ps我得到以下内容: root 4699 1 0 15:14 pts/2 00:00:00 sudo -u openmq /opt/PacketPortal/openmq/default/bin/imqbrokerd -bgnd -autorestart -silent -port 7676 -Dimq.service.activelist=admin,ssljms -D openmq 4701 4699 0 15:14 pts/2 00:00:00 /bin/sh /opt/PacketPortal/openmq/default/bin/imqbrokerd -bgnd -autorestart -silent -port 7676 -Dimq.service.activelist=admin,ssljms -Dimq.ssl openmq 9095 9063 54 16:21 pts/2 00:00:02 /usr/java/latest/bin/java -cp /opt/PacketPortal/openmq/default/bin/../lib/imqbroker.jar:/opt/PacketPortal/openmq/default/bin/../lib/imqutil.jar:/opt/PacketPortal/ope 4699的父进程是1的事实似乎暗示了这个进程已被正确地守护进程。 […]

Linux如何在远程服务器的后台运行脚本?

我在一台linux机器上。 我想在远程服务器上运行四个Perl脚本。 每个脚本都会生成一个输出文件,但运行可能需要几个小时。 我想在后台运行脚本,如果我从服务器断开连接,退出shell提示或注销,它将继续运行。 这些脚本还在运行时将命令行打印出来。 我希望能够检查脚本正在打印到命令terminal的打印语句。 我通常会使用screen -S命令来创build一个屏幕。 然后按CTRL + A CTRL + D分离和screen -r重新连接到屏幕,但我所在的远程服务器没有屏幕。 而且我没有安装sudo的权限。 如何在远程服务器的后台同时运行这4个Perl脚本? 比如说我的脚本叫做gene1.pl ,我该怎么做? 我试图做nohup perl gene1.pl & >> gene1-terminal_out.txt但它不起作用。 同样,我希望能够在脚本运行时dynamic查看terminal上的输出。

linux +如何识别文件是否被链接指向

我创build了一个名为 – 192.9.200.1的新文件 touch 192.9.200.1 然后我创build新的链接,将指向192.9.200.1文件 ln -s 192.9.200.1 file 所以最后我得到: ls -ltr /tmp -rw-r–r– 1 root root 0 May 8 19:39 192.9.200.1 lrwxrwxrwx 1 root root 11 May 8 19:39 file -> 192.9.200.1 但是当我做ls -ltr在192.9.200.1文件我不能看到其他链接是否指向192.9.200.1 ls -ltr 192.9.200.1 -rw-r–r– 1 root root 0 May 8 19:39 192.9.200.1 如何识别文件或目录是否有链接, 我不想在/ tmp目录下执行ls -ltr来查找链接!